Add some more operating overloading goodness to Filter.  -filter translates into filter.not.  Also added tests to make sure filter1 & filter2 and filter1 | filter2 both work as expected.
Add Layer.first() to return the first Feature matching an optional Filter and optional sorting parameters.
Stop using deprecated methods.
Add Bounds.contains(Point) method.