Keyboard fixes for SDL2.

This switches the keyboard handling code to always use symbolic / UTF8 names for
the keys, rather than relying on passing single characters, scancodes, and
whatnot.
SDL2: Pass key modifiers.

This passes key modifiers with each keypress, so we don't have to rely on our
own state for this.
SDL2: Query SDL for key modifiers each frame.

Instead of tracking our own modifier state in buttons_down, we now query SDL for
the keystate each frame using SDL_GetModState, which we store in
App:key_modifiers. We now check that variable when looking for shift/ctrl/alt
states, rather than buttons_down.
SDL2: Fix escape and space keybindings.