even better logging

Apparently when we try to print an attributed DefTree, it doesn't print
itself, but rather itself recreated based on the tree's symbol. Therefore
we have to stringify trees to be logged before entering the current phase.

Otherwise one could see really disturbing log messages like:
A07) def p3(): Double = p2 -> def p3(): Double = p2

When in reality it's more like:
A07) def p3(): valium.testcases.single.Point[Double] @unboxed = p2 -> def p3(): Double = p2
typechecking failures now log raw representation of the failed tree
okay let's try to see whether polymorphic value classes work
need to take TypeApply nodes into account
better explosion failures
deduplicating explosion logic
log explosions
correct handling of DefDef explosions

Apparently ddef is subtly different from newDefDef(ddef.symbol, ddef.rhs):
https://groups.google.com/forum/#!topic/scala-internals/fgfRw4JVkyI,
which means that we have to duplicate parameter explosion logic in
InfoTransform and TreeTransform parts of valium-convert.
duh it still doesn't work
Merge pull request #26 from xeno-by/master

looking into polymorphic value classes