initialise UI::Widget::m_selected

Fixes a bug in the Personal Info screen where the commander name TextEntry
widget is initially drawn with a highlight (indicating that it has focus),
even though it doesn't actually respond to text input (because it doesn't
*actually* have focus) until you click it.
use pop_back() instead of resize(size() - 1)
create a GameUI::KeyBindingCapture widget

This is intended for use in the settings screen to capture the next key or
button input, so that key bindings can be reconfigured. It is currently
incapable of capturing joystick/game controller button inputs, because
the UI code doesn't know about those events.
implement key binding configuration in the settings screen (buggy)

This currently has some limitations:

- The key capture widget doesn't know about joystick or game controller
  button events (because the UI code doesn't know about them), so only
  actual keyboard keys can be bound.
- The key capture widget can only capture a key when it has text input
  focus, which it doesn't have by default. It only gets text input focus
  when you click on it. KeyBindingCapture::Capture() itself tries to grab
  focus, but this fails because it is called from inside the onClick
  handler of a button and EventDispatcher resets the focus (due to the
  click) after the onClick handler finishes.