send extra chars from cursor window to input via global var

In the recent refactor, I made a design decision that it would be great to make `Input` and `CursorAwareWindow` separate objects that can be instantiated and used independently.

The problem is this is abstraction that isn't quite right, because querying for cursor position requires reading on stdin, something an `Input` instance ought to have total control over. This is mostly ok, because the `CursorAwareWindow` instance just ducks in and does blocking read on stdin but if this read happens upon characters that aren't in response to its cursor position query, it (instead of the `Input` instance) received them.

Options I thought about included

* `CursorAwareWindow.get_cursor_position` takes an input object as an argument so it can hand over the extra characters
* Use `ungetc` to put the characters back on stdin
* Somehow wrap stdin so it's a smart object that has it's own internal buffer

Currently, we just pass in the same stdin to Window and it uses it, raising an exception if it ever finds characters it should be reading. This doesn't happen much because it does a blocking write for the cursor position query and a blocking read to get the characters, reading no more characters after it has a match. The issue is when characters are sitting on stdin before the cursor position query happens.

The problem in bpython-curtsies right now is that we check for the terminal size and get the original cursor position before reading any characters. This PR uses a global state hack to pass the characters over.