WIP: Added Join class to replace JoinInfo

Replace ORM's JoinInfo namedtuple with a Join class. The idea is that the Join class actually produces the whole join and also contains additional join information (for example, is this join equal to some other already existing join?)
Copy-pasted from Query.

I don't know of any database that has different INNER/LOUTER syntax, so it seems these can be constants. Even if there exists different forms of INNER/LOUTER syntaxes, it would still be a very bad idea to alter this per Query class, as the choice of right syntax is responsibility of Compiler, not the Query class.