Fixing Iota to be completely thread safe.

Part two of the rustbox - iota changes to make RustBox thread safe.  This requires the rustbox changes to be included first.

This resolves double-free assertions that were happening consistently 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.
I wonder should we pass the output if `get_term_height` and `get_term_width` here, instead of calculating them inside view... what do you think?

I'm thinking in the future we will want to create views which are not the full size of the terminal, in which case we will need to change this. Its fine as is, just worth keeping in mind for later I think.