Refactor Multi Tier Project
CAY-1959 Chainable API for SelectQuery

* merge method for PrefetchTreeNode for more comprehensive prefetch subtree merging
* using the new merge in SelectQuery as well

UPGRADE NOTES:

The most visible side effect of this change is that Property.xyzPrefetch() method will now return
a root of the prefetch tree that can merged into the query instead of a leaf that can't.

So in an unlikely case someone did MyEntity.MY_PROPERTY.disjoint().setSemantics(JOINT), the last part in this chain
is not longer going to work.
Refactor Locking Project
Refactor People Project & Inheritance Projects
Refactor Relationships Project
Refactor TestMap Project
Fix license header
Refactor Default Project
CAY-1968 SQLSelect cleanup and omissions

* also a unit test for SQLSelect
undeprecating 'isFetchingDataRows' - at least the getter is still valid
refactoring, cleanup

* cleanup cache key generation flow for SelectQuery
* do not generate cache key for null cache strategy
unit test cleanup
ensuring non-null cache strategy
CAY-1959 Chainable API for SelectQuery
Implement DBCleaner
Merge remote-tracking branch 'upstream/master' into refactor-tests

Conflicts:
	cayenne-server/src/test/java/org/apache/cayenne/query/SelectByIdIT.java
[CAY-1969] Malformed EJBQL Yields NPE