Virtual keyboard

I've added a new virtual keyboard control, together with a text field control to replace text boxes, which shows the keyboard to allow the user to enter text. The keyboard can be used with the arrow keys and enter, or with the mouse, or by typing directly with the physical keyboard.

The new controls can all be re-templated by theme writers, and custom key layouts can be defined for additional language support or for specialized keyboards.

The only layout that I have included is for the English language, and the symbol set in particular is a fairly random assortment of symbols at the moment.

There are a couple more features that have yet to be implemented, but I'll open a separate pull request for those when they are done:
* Alternate key actions. Extra key variations that are available if the user holds a key down or presses another button on the remote (* perhaps?), similar to the W8/WP8/Android keyboards. The KeySet definitions already support this, but there is no UI for it yet.
* Some way of organizing and managing key sets for different languages. You can currently place key sets into groups, and provide a button to cycle though the sets in a group (this is how the default layout switches between letters and numbers/symbols), but there is no good way to manage defining all the layouts available for different languages or choosing which to default to.