ParaStudent: Generating and Evaluating Realistic Student Code by Teaching LLMs to Struggle