Improved error message for not being able to match foreign keys
Checing the other error messages too
Moving common code to parent class
Moving more code around
Adding failing test to start implementing the duplicate alias detection
This fixes the ResultSet trying to hydrate a result twice.

Still results are being nested incorrectly, though
Simplifying result nesting by alwasy passing the expected nest key.

This removes the hackery introduced for nesting results from an external
query and crazy names like '___collection_'
Fixed some broken tests
Fixing more failing tests
Fixed more failing tests
Fixed the reamining failing tests in the ORM package
Fixed last remaining failing test and completing test case for duplicate
aliases
Adding missing doc block
Adding some missing docs
Fixed CS issue
Optimizing duplicate aliases detection by making it per branch

Also throwing exception when it is not possible to solve the duplicate
aliases issue
Merge pull request #3221 from cakephp/3.0-duplicate-aliases

3.0 duplicate aliases

Fixes #3113