3.0 - Implement connection prefixes (#2666)

This PR aims to implements connection prefixes (#2666).

Since it's my first PR ever on an open source project, feel free to tell me if I did anything wrong.
I also have a some questions regarding "Cakey" way to do things :

1/ Should the Connection::fullTableName() method throws an exception if the $name parameter is neither a string nor an array ?
2/ Are there any missing tests ? (ie. should I write test for the Query::from() and Query::join() methods as well as the Collection::describe() ? I tried for the last one but was not successful in having correct results. I was hopping a core contributor could help me write this test)
We normally avoid lots of setter methods. Most of the expression objects are value objects that don't need to be mutable.