Fix/geoshape

This PR addresses issues two issues (#776 and #782) with the current geo shape support in NEST.  Previously, NEST only allowed for a Coordinates object of type IEnumerable<IEnumerable<double>> for shapes which only worked for a sub set of the GeoJSON objects that Elasticsearch supports.

GeoShape descriptors now expose a Shape() method rather than Type() and Coordinates(), which accepts an IGeometryObject.  All of the supported GeoJSON objects can be found in Nest/Domain/Geometry and all inherit from a base GeometryObject<TCoordinates> which implements IGeometryObject.

Instead of this:

	.Query(q=>q
		.GeoShape(qs=>qs
			.OnField(p=>p.MyGeoShape)
			.Coordinates(new [] { new [] {13.0, 53.0}, new [] { 14.0, 52.0} })
			.Type("envelope")
		)

One can now do this:

	.Query(q => q
		.GeoShape(qs => qs
			.OnField(p => p.MyGeoShape)
			.Shape(new Envelope { Coordinates = new[] { new[] { 13.0, 53.0 }, new[] { 14.0, 52.0 } } })
		)

Which automatically sets the geo shape type as well.  There is no longer a need to call Type() to specifiy it separately anymore.

When using the OIS, ToGeoShape() has to explicitly be called, whereas the descriptors call it automatically when Shape is set:

		var envelope = new Envelope 
		{ 
			Coordinates = new[] { new[] { 13.0, 53.0 }, new[] { 14.0, 52.0 }
		};

		QueryContainer query = new GeoShapeQuery
		{
			Field = "myGeoShape",
			Shape = envelope.ToGeoShape()
		};

Not very ideal, open to suggestions here.  The reason for this is that the GeoShape object that's part of the request needs to be generic enough to account for all the different geo shape parameters ES takes.  Right now, the main differences are the different Coordinate types (which is why Coordinates is of type object), and Radius which only applies when using the Circle shape.

Check out the tests here to see an example usage of all the shapes:  https://github.com/elasticsearch/elasticsearch-net/tree/fix/geoshape/src/Tests/Nest.Tests.Unit/Search/Query/Singles/GeoShape

NOTE:  This introduces a breaking change between RC1.0 to GA, but one worth having.  We could put back the Type() and Coordinates() methods and just let Shape() override them, but it may be confusing.