Simplify processing of Unhandled keystrokes
Currently, the InputManager uses a bunch of mappings in the static KeyHandlers class to make sure that unrecognized keystrokes (for instance, the media keys, the browser control keys, etc) don't cause anything to print in the REPL. For instance:
https://github.com/dotnet/HttpRepl/blob/d2e744a42b7a1b66fbd9a7eeef6d3e6170931815/src/Microsoft.Repl/Input/KeyHandlers.cs#L71
This became apparent when trying to move the Microsoft.Repl project to netstandard1.3, where most of those ConsoleKey values don't exist (they're in netstandard2.0 and in netcoreapp2.X and above).
There are other keys that aren't in the current ConsoleKey and would cause this, they're just rare. But the netstandard1.3 change makes that set of keys much larger and more likely to be hit (even accidentally).
We need a better way to handle the full set of otherwise-unhandled unprintable characters. As I mentioned in https://github.com/aspnet/HttpRepl/pull/117#discussion_r307539557, one option would be to have our own char.IsPrintable( ... ) implementation, based on something like IsLetterOrDigit || IsPunctuation || IsSymbol || Environment.NewLine || ' ' but we would need to take care to get that right. Once we had that, if the ConsoleKey wasn't handled by KeyHandlers, and the character for that key didn't meet our definition of printable, then we could safely just ignore it.
I'm putting this issue in here to track this work since I think it is separate from the conversion of the library to netstandard1.3, but still very important.