Don't insert garbage for non-printable keys.

Function keys and Meta keys should not insert anything if the key is not bound to any action.
Fix problem with ShowCompletions at end of buffer

When the cursor was at the end of the buffer, ShowCompletions would cause an exception trying to move the cursor outside the buffer.

Fixed by writing an explicit newline - done using the native Console api so it isn't redirected by the test framework.
Fix a couple small completion bugs
implemented ConsoleKeyInfoConverterAttribute and associated tests