Extra geometry functions

As discussed at last week's hangout, this PR adds a number of extra geometry functions that provide access to individual components of multigeometries, as well as providing efficient functions for appending to them. It also a fixes a bug where requesting components of a multigeometry with an XYM layout could return geometries with an XYZ layout.