Convex programming: LP, QP, SOCP, DSDP

Has backwards incompatible changes

Ready for merge pending approval by @jaeandersson