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
No `@test` :D
Also, I didn't know `==` would work on a constraint ref like that all.
I'm adding a couple of other test cases just to make 100% sure I'll add it then