Fix indentation of TerminalLib

Signed-off-by: Ricky Elrod <ricky@elrod.me>
Introduce `TrampolinedPureIO` - breaks build.

This currently breaks the build, but this is roughly what our trampolined
Pure IO monad might look like.

Instead of implementing free, we use the concept of `Trampoline` as a sort-of
free monad. Of course, since Java has no HKT, we can't abstract over what the
trampoline actually wraps (e.g. `Trampoline<M<_>>`) so we're unfortunately
forced to copy-paste a lot of code around.

[ci-skip]

Signed-off-by: Ricky Elrod <ricky@elrod.me>