_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.
The random thing here scares me a bit. It seems like you might get some errors that would be very hard to debug. Is there something else we could do here? Keep a counter somewhere?