Separate projection functions into separate file.
Refactorings by slava.
Refactor out the tree construction.
Define interface for selector-fields merger
Make conflictFn also a conflict resolution function
Implement combinattion of selector and projection for inclusive projection.
Tests for combination of selector and inclusive projection
Fix error reporting
Mark tests for inclusive projections
Tests for exclusive projections.

TDD FTW
Implement combine selector and projection for both including and excluding projections.
Apply shared projection to anything stored in the cache.
Test to catch modifier affecting fields projected out
Filter out modified object

If modifier sets fields we don't like in cache, for example