Add __geo_interface__ to shaperecords and optional data to shapes.

Initial implementation of __geo_interface__ on shaperecords.  Required adding fields attribute to _Shaperecord class to allow for the field names to be passed to allow creation of properties in output __geo_interface__ GeoJSON.  In order to allow for __geo_interface__ to exist on both shapes and shaperecords I extracted the existing __geo_interface__ code from _Shape and created a GeoInterfaceMixin class that both _Shape and _Shaperecord could inherit from.  When possible the bbox and properties should be created for shapes and shaperecords.  I also created two additional test shapefiles, intersections and points and a example program named geotime.py  that calls the __geo_interface__ method on the shapes and shaperecords from the test shapefiles and prints the results.