Start integrating the yet unwritten QueryCacher into ORM\Query.

I figure that caching query results is separate enough from building
& executing queries that a separate object is justified. Having
a separate object will make writing tests much simpler as well.
Add skeletons for QueryCacher & related test.
Fix issue with CacheRegistry related to mocks.

When a mock returns null for the init() method, no fatal error should be
emitted.
Implement the QueryCacher class.

While basic it would confuse and pollute ORM\Query if it lived there.
Making this class a decorator would also complicate the external use of
Query so I didn't want to go down that road either.
Integrate cache writes to Query & add tests..

Once we have a result set we can cache it and return it. Ensure that
cache reads and writes happen. Don't write to the cache when we read
data from the cache. This might result in infinitely cached data.
Remove TODO.
Merge pull request #2599 from markstory/3.0-query-cache

3.0 make query caching simpler