Tweak for terminal I/O.

Avoid over-zealous flushing.
Restore ability to read from stdio (i.e., stdin) with MRI 1.9

This was previously broken in MRI 1.9 because of a subtle change in the rules
for how block variables are handled. We were referencing a local variable inside
a nested block, and then redefining the variable in the outer scope (the
redefinition would happen before the block was invoked). In MRI 1.8, this
produces the expected behavior. In MRI 1.9, the redefinition of the variable is
propagated to the code block.

It didn't help that the unit test for reading from stdio was pretty lame; along
the way, improve the test, and refactor a bunch of the BudTerminal code.
Code cleanup for tc_rebl.
Add support for lattices to rebl.
Minor code cleanup for terminal.
Merge branch 'master' of github.com:bloom-lang/bud