Added SpatialFinder and adapted SpatialPair

The SpatialFinder consist of the logic to find spatially related elements
using a particular set of layers and a certain behavior. The SpatialFinder
uses the behavior to restrict the set of returned objects, first by
eliminating objects outside a given extent and further by eliminating
objects which should not be used within a given filter. It will also
sort objects when the behavior considers this necessary. Currently
three behaviors exist: Behavior (with a 0x0 extent), ExtentBehavior and
RadialBehavior. Behaviors will be added in the future when they consists
of reusable patterns.

SpatialPair is adapted to not use a data provider directly but instead using
a layer.

In the near future, SpatialFinder will be extended with the possibility
to return SpatialPair objects from a find.