upgrade to solve

addresses issues 
- https://code.google.com/p/sympy/issues/detail?id=1172
- https://code.google.com/p/sympy/issues/detail?id=2830
- https://code.google.com/p/sympy/issues/detail?id=3149
- https://code.google.com/p/sympy/issues/detail?id=3720
- https://code.google.com/p/sympy/issues/detail?id=3721
- https://code.google.com/p/sympy/issues/detail?id=3722
- https://code.google.com/p/sympy/issues/detail?id=3844
- https://code.google.com/p/sympy/issues/detail?id=3845
- https://code.google.com/p/sympy/issues/detail?id=3878

We may want to extend this to inverse_set or something like that.