POROver: Improving Safety and Reducing Overrefusal in Large Language Models with Overgeneration and Preference Optimization