Grid slices return proxy object

Created a GridSliceProxy object which represents a slice of a grid
with its own origin started at (0, 0).  However accesses into the
slice are proxied to the Grid via a weakref.proxy reference.

This allows (possibly recursive) algorithms to work on a subsection of
the Grid at a time.