Mutable variables!

With this patch, the Variable object has been refactored and is now mutable.
Some of its behavior may have changed in other subtle ways. For example,
getting an item from a variable now returns another variable instead of an
ndarray.