Terminal platform abstraction

It’s worth linking in the CLI apps domain working group in relation to this. I agree that since this is a focus area for Rust 2018 it is bound to get a lot of traction.

A terminal platform abstraction seems fundamental to this goal. @killercup might be interested in pitching in here?