BPQP: A Differentiable Convex Optimization Framework for Efficient End-to-End Learning