_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.
If you're worried about uniqueness an easy thing would be to use `uuid.uuid4().hex`. I'm not sure a collision would matter though, since the variable is cleared right after and I don't think you can have multiple threads using the same connection anyway (?).