Abstract out transcode handling.

What's going on here assumes encoded strings, and probably wants a
revisit at some point. This can be a no-op on JVM, I guess...
We'll now call the past target simply "ast".

This means you now do --target=ast. Referring to PAST, which is in the
past, is kinda confusing in the age of QAST.