Added Dimensionality concept into the type system.

Changed crosses to use the Dimensionality of a Geometry instead of overloading across specific instances.
Modified contains, crosses, and within to use Dimensions.
Merge pull request #743 from lossyrob/geometry/methods

Added Dimensionality concept into the type system.
Merged in master - new Dimensions traits