working CVXopt support

It's still slow, but it demos the interface:

```python
## free variables ##
A, S, C_D, C_L, C_f, Re, W, W_w = gpkit.monify('A S  C_D  C_L  C_f  Re  W  W_w')

# drag modeling
C_D_fuse = CDA0/S # fuselage viscous drag
C_D_wpar = k*C_f*S_wet_ratio # wing parasitic drag
C_D_ind = C_L**2/(pi*A*e) # induced drag

# wing-weight modeling
W_w_surf = 45.24*S # surface weight
W_w_strc = 8.71e-5*(N_ult*A**1.5*(W_0*W*S)**0.5)/tau # structural weight


### solve it! ###
gpkit.minimize(0.5*rho*S*C_D*V**2,
              [ # subject to #
               Re <= (rho/mu)*V*(S/A)**0.5,
               W >= W_0 + W_w,
               C_f >= 0.074/Re**0.2,
               W <= 0.5*rho*S*C_L*V**2,
               W <= 0.5*rho*S*C_Lmax*V_min**2,
               W_w >= W_w_surf + W_w_strc,
               C_D >= C_D_fuse + C_D_wpar + C_D_ind
              ],
                'cvxopt', {'show_progress': False})
```

Check out the example [iPython notebook](http://nbviewer.ipython.org/github/bqpd/gpkit/blob/cvxopt/test_driven_development/Simple%20GP%20for%20Aircraft.ipynb)!

other things:

## define monomials using dictionaries ##
Because
`Monomial({'x': 2, 'y': -1}, 5)` seems cleaner than 
`Monomial(['x', 'y'], 5, [2, -1])`, although that is still an option.

## monify ##
Because
`x, y = gpkit.monify('x y')` seemed cleaner than
`x, y = gpkit.Monomial('x'), gpkit.Monomial('y')`

## posynomials! ##

```python
import gpkit
x, y = gpkit.monify('x y')
p = 3.14*x*y**2 + y/2 - x**3*6*y + 2
assert str(p) == '2 + 0.5*y + 3.14*y^2*x + -6*y*x^3'
assert p.monomials == set((3.14*y^2*x, 2, 0.5*y, -6*y*x^3))
```

Seems to be working. Only lightly tested / covered, so another set of eyes would be appreciated.