Add a bunch of convenience methods to the model collections.

These methods are in detail:
- removeById($id)
- contains($model)
- containsById($modelId)
- getModelIds()
- intersect($collection)
- union($collection)
- diff($collection)
- isSubsetOf($collection)
Add FilterBuilder and helper classes to simplify management of filter conditions.

The new FilterBuilder classes allow the manipulation of parent->child
and root filter conditions in data definitions.
Utilize the new filter builder classes.
Add some unit tests.