Added an enforced_element parameter to NdMapping

NdMapping objects can now be specified with an enforced_element parameter, which will be used to check all elements are of a certain type. The _check_element method can be subclassed to implement more specific checks on the elements.
Changed return type of NdMapping to NdMapping

Slices of NdMapping objects used to return an OrderedDict, now it will return another NdMapping with a reduced set of keys.
Changed NdMapping iterable interface to return values
Fixed metadata method in NdMapping

NdMapping objects could not process metadata dictionaries passed to it previously.
Changed SheetStack implementation to use NdMapping

Simplified the SheetStack by subclassing from NdMapping.