DSL ideas and refactor

Beware that, although all test pass, I have not tested my mods in the wild, so I advise to take this branch more as a source of ideas than as a qualified merge. 

Consider also that I forked and played with it for my own merry amusement and learning (dsl, passing blocks, etc), so many of the changes may not even necessary or even advisable to implement.