Removed SheetIndexing replacing it with SheetCoordinateSystem

SheetView and ProjectionGrid inherited from SheetIndexing providing
a coordinate system and convenience functions. Instead they now
inherit from SheetCoordinateSystem.
Cleaned up ProjectionGrid after switching to SheetCoordinateSystem
The roi property of SheetView now returns another SheetView
Added SheetPoints and SheetContour views, fixing roi and adding layers
Cleaned up and simplified views.py
NdMappings generate info strings for their elements

NdMapping objects generate info strings for each element from the
dimension_labels and values, formatted using the info_format
parameter.
Added optional key type check to NdMapping objects
Introduced view() method to Pattern generators for obtaining SheetViews
Implemented __contains__ special method for BoundingRegions
Introduced concept of composable point and contour layer overlays
Added normalization methods/property to view objects
SheetView slicing now returns sliced sheetviews and not sliced arrays
SheetPoints now an iterable that iterates over (x,y) points
SheetView now returns closest matrix element if numerically indexed
Added .N property for convenient normalization (replacing .norm)
Added sorting and clone methods to NdMapping objects
Removed info_format processing from NdMappings
Pattern generators can now be sliced to generate sheetviews
Added title parameter to SheetLayers and SheetStacks
Removed SheetLayer stack method and added SheetStack bounds parameter