_Session.set_variable for ndarray and spmatrix

This function will correctly serialize numpy arrays as json due to
customizations to the JSON encoder. Additionally, this function will
handle scipy sparse matrices as well.

The matlab magic now calls this function.

This commit *DOES NOT* add any new dependencies to numpy and scipy, and
the code should function as normal without them.
Yes, it is entirely for uniquness.

Especially with the tcp port, it is possible to have two separate objects going. For example, I ran the following in MATLAB:
```MATLAB
matlabserver('tcp://127.0.0.1:5555')
```
and then this in an IPython notebook
```python
import pymatbridge
a = pymatbridge.Matlab(socket_addr='tcp://127.0.0.1:5555')
b = pymatbridge.Matlab(socket_addr='tcp://127.0.0.1:5555')
a.start()
b.start()
a.set_variable('x', 1)
b.get_variable('x')
```
In fact, a separate ipython notebook would also be able to run
```import pymatbridge
a = pymatbridge.Matlab(socket_addr='tcp://127.0.0.1:5555')
a.start()
a.get_variable('x')
```
@arokem do you think uuid would be good, or would you prefer a global? The reason I didn't go with a global originally is that 2 separat python isntances could connect to the same MATLAB server and would no longer be unique.