Add piecewise surface get_patch methods.

get_patch(i,j) retreives the patches in grid order, where (i,j) and (i+1,j)
are patches that neighbor in the u-direction.  Patches are retreived by
walking both keys, so this operation is O(nu+nv).

get_patch_unordered(i,j) retreives patches directly from the underlying
store, which has shuffled order.  Each row has constant i and each column
has constant j; however, i and i+1 may not be neighbors.  Patches are
retreived by direct access to the underlying store, so this operation
is O(1).
Added const versions of get_patch() methods.
Merge branch 'feature/Surface_Patch_Iteration' into develop