Optimizing print dsl

Bug fixes:
- guards only updated code, not guarded values
- changing captured variables from outside the DSL scope weren't picked up correctly because they were read at class definition time only

Testing:
- Expose compilation counts so runtime and compile time compilation can be tested
- Separate the print dsl into FullyUnstaged, optimizing and FullyStaged versions and add tests for each trait (still no test for HoleTypeAnalyser and Interpreted DSLs)

Documentation:
- Fixed docu of FullyStaged, FullyUnstaged, LiftLiteralTransformer, HoleTransformer and added some to YYTransformer.