keyboard/mouse context mgrs, printable width of sequences, sequence parsers

An overview of the changes made:

1. keyboard input & stream definitions
* an additional stream, self.i_stream, which is always sys.__stdin__. You may prefer to allow a input_stream keyword to Terminal(). Some refactoring of variable 'descriptor' to 'o_fd' vs. 'i_fd' to differentiate which file descriptor it refers to.
* primary routine kbhit() is styled after the win32 name of the same purpose. It is a select() wrapper on stdin, "any input on keyboard?".
* primary context manager cbreak() is a simple wrapper to tty.cbreak() that stores and restores terminal settings on exit with a finally clause.
* primary context manager mouse_tracking() is a simple wrapper for sending sequences to enable mouse input as terminal sequences. mouse sequences are not decoded by inkey(), an example decoder is provided with test_mouse.py
* backend initializer _init_keystrokes() abuses curses to build a comprehensive keystroke database of multibyte sequences, code definitions and values.
* primary routine Terminal.inkey() is styled after qbasic? The classic issue of "did a user press the escape key alone? Or a multibyte sequence representing an application key?" is solved by timing with kbhit() and multibyte sequence decoding application keys as well as Unicode encoding of the byte-based input that os.read() returns.
* primary routine Terminal.wrap() and backend routine ansiwrap() is styled after textwrap.textwrap, but is sequence-aware. This is achieved using backend class AnsiWrapper by overriding _wrap_chunks and making use of AnsiString.
* backend generator _resolve_mbs(ucs) yields a Keystroke instance for each "keyboard hit" detected on input. This is the primary multibyte sequence parsing routine.
* backend function _sqlen(ucs) returns the length of the terminal output sequence pointed to by ucs as an Integer
* backend function _is_movement(ucs) returns True of the output sequence pointed to by ucs is "unhealthy for padding", that is, has positional effects on the terminal that would cause the printable width of the string to be indeterminable. Examples are term.clear or term.move.
* backend class AnsiString(unicode) ovverides __len__, ljust, rjust, and center to provide sequence-aware printable width of strings. These methods are duplicated to Terminal.center, ljust, and rjust. You may chose to provide access to this routine with a method such as Terminal.printable_length(). If you chose to do so, I recommend also supporting east-asian double-width with wcswidth() routines, let me know.