@dkubb yeah, i think we already agreed on the DSL we want to have: http://pastie.org/8508711

Note that this doesn't make a distinction (api wise) between base and regular relations. If `#relation` is called inside a `database` block, the system will create a base relation, if it's called outside of a `database` block, it will create a virtual relation.

I just wanted to do the `AST::Builder` refactoring *before* I change the DSL, as this now makes manipulating the AST much easier.