Add within functionality

This pull request adds the following:

* point.within(point)
* point.within(polygon)
* point.within(multipolygon)
* point.within(linestring)
* point.within(multilinestring)
* point.within(multipoint)
* polygon.within(polygon)
* polygon.within(multipolygon)
* multipolygon.within(polygon)
* multipolygon.within(multipolygon)
* linestring.within(polygon)
* linestring.within(multipolygon)
* multilinestring.within(polygon)
* multilinestring.within(multipolygon)
* multipoint.within(polygon)
* multipoint.within(multipolygon)