Multiple dialects in parallel

This is my first attempt at #53. The select test had to be changed as the Select() node had no way of knowing the dialect. Other than that I think it turned out well enough: all nodes should either have a reference to sql, or a reference to a table. 

Then they can pull the necessary dialect from the sql reference.

Is it any good? :)