Fixing Iota to be completely thread safe.

This resolves double-free assertions that were happening consitently for
me in RustBox when I exited.  It also preserves stacktraces properly
without terminating RustBox early.

This is motivated by changes in RustBox (to replace the old unsafe API
with a safe Rust one).  Note that in theory, we should be able to split
RustBox out into two components, an input component and an output
component, but to do that properly and keep it threadsafe requires &mut
references to be sent across thread boundaries.  Currently that would
require unsafe code, so for the moment we revert to a single-threaded
solution.
Use polling without a timeout for the time being.

Since input is synchronous, there isn't any reason to include a timeout
for the time being.
Remove the extra backtrace stuff.

With the recent changes to RustBox, main looks extremely straightforward
now, while still being totally safe.  The previous solution was not
quite correct since it would do things like duplicate error messages if
you redirected stderr, and only captured stderr output on panic!.  The
new solution lets you tell RustBox to automatically redirect stderr to
an internal pipe, which will get printed at the end of the program.
This allows us to avoid hooking into the panic system explicitly and is
also much easier for users to use.  It also lets us get rid of the final
unsafe block (again).
Fix: don't capture stderr_raw, not stdin_raw.
Merge pull request #42 from pythonesque/make_threadsafe

Fixing Iota to be completely thread safe.