UI::CheckBox: add Toggle, SetState, IsChecked, onValueChanged (and Lua API)
UI::List: Add {Get,Set}SelectedIndex, NumItems, IsEmpty (and Lua API)
UI::TextEntry: add Lua binding for SetText
UI::Slider: add {Get,Set}Range and fill in Lua API
UI::DropDown: expose the same {Get,Set}SelectedIndex API as UI::List
add support in FileDialog for entering a new file name
adjust FileDialog design somewhat to add an extra bit of instruction text
expose various engine settings to Lua through accessor functions on Engine
add Lua API Lang.SetCurrentLanguage
add GetKeyBindings() to the Lua Engine API

This is temporary, but probably will last for a while. The current key
bindings system will eventually be replaced by something tied into new-ui,
or some other Lua-based binding system.
implement a new setting screen in Lua/new-ui
remove Engine.SettingsView(), which is no longer needed
hook up the new-ui settings view as a UIView for use in-game

(as opposed to use from the main menu)
delete GameMenuView and FileSelectorWidget, which are no longer used
remove the VSync checkbox (vsync setting isn't used by graphics init code)
fix the key binding list so it is always displayed in the same order

The order of Lua table string keys varies from run to run, because Lua
applies randomisation to its hash function (probably to try to mitigate
against performance attacks based on giving many keys that all hash to
the same value). Even if the order was consistent from run to run, it's
not good to use it because it still isn't controllable.
implement Engine.SetKeyBinding
create a stub button to change key bindings in the settings screen
use a SmallLabeledButton for the 'Set' button to change key bindings
make Engine.KeyBindings() return the translated name in the bindings table