QCML.dims now delegates to Program.dimensions

Have to be a little careful that it's okay to set dims before
canonicalize.  This appears to work though.
Playing around with abstract_dim
Merge branch 'master' of https://github.com/cvxgrp/qcml into flexdims/3
Trying to use AbstractDims but with concrete dims
Added __eq__ to AbstractDim to support expr simplifications

So that AbstractDim(1) == 1 -> True and AbstractDim(-1) == -1 -> True.  Useful
for simplifying expressions.
Work in progress: abstract dim generates Matlab code!

So actually spits out Matlab code with abstract dimensions!  Probably there
are bugs though, especially around proper parenthesizing; should fold
AbstractDim._safe_str into __str__ so that parentheses get added under most
printing conditions and not just when multiplying/dividing.

Shouldn't take too much to get this working for Python and C codegens too.

Things are generally brittle; I've only implemented the AbstractDim operators
that seemed to be necessary for the CBP example, so there are likely to be
more needed to cover general case.
Adapt CBP example for flexdims
Bugfixes for AbstractDim

collections.Counter.subtract is implemented in a pretty broken way, but
easy to work around.  Also I had a bug in the __div__ code.
Raw code output back in
AbstractDim printing cleanup

Don't print terms with 0 coefficients, for an empty AD or one with all
0 coefficients, print 0.
Docu
Now allows abstract dim variable name to be rewritten
Switch back to m,n for CBP example
In progress gettings dims argument into prob2socp

Mostly done but need to get dims struct into the C header file
Geting C codegen setup with flexdims argument
Didn't mean to include this
Finish changing back to m,n for CBP example
Default dims={} so works with 1 arg for concrete dim problems
Bugfix; socp2prob needed dims arg too
Bugfix; needed to include abstract_dims in C_Codegen __init__