Support international keyboard layouts in the virtual keyboard

This is a re-hash of #4242 with an attempt to make it simpler and less invasive.

The skin changes are quite a bit (and will need prettying up) but perhaps @vkosh can work with @ronie @Black09 and @BigNoid on this.  We'll also need a skin bump when this goes in.

@vkosh I changed it so that all keyboard layouts are stored in a single file, and the user just selects the one(s) they want.  i.e. it's completely detached from region or language.  IMO this is the better way to go, even if it means a little more playing around for the user to setup initially.

Thoughts/comments/criticisms welcome.