WIP: Quadratic macros

Adds support using macros to construct quadratic objectives/constraints. I do this by widening the ``AffExpr`` that gets passed around during the expression construction to a ``QuadExpr``, and then lowering again if there are no quadratic terms. I don't think this will cause a performance regression since this just carries around an extra three empty vectors in the affine expression case, but I'll do performance testing.

TODO: 
* [ ] Benchmark performance
* [ ] Clean up ``addToExpression`` to get rid of extraneous ``0x`` term in affine expression
* [ ] Documentation/NEWS
Haha no wonder tests passed then...