Super Duper GeoJSON refactor of DOOOOOM!

Also removes all previously implemented geometric functionality.
Better to use `if ( primitive == nil )` here, or else there could be a bug if our decoder returns a valid primitive but also creates an error object. This could occur if the decoder calls multiple methods while decoding and passes in our error pointer for each of them-- if a step fails, but it was recoverable, the error will not be nil.