Variable projection methods for large convex quadratic programming