PurpCode: Reasoning for Safer Code Generation