Skin templating system.

This change introduces a template system into the current skin system. With all the new features we are adding in Mixxx 1.12.0 it is clear that the skin system presents a huge maintenance burden for @esbrandt and others. This allows us to slice the skins up into small, re-usable chunks.

For an example of what a skin using this looks like, see this skin:
https://github.com/rryan/developer_skins/blob/master/DeereSkeleton4Deck1280x800-WXGA/skin.xml

This is largely a refactoring of code that used ```WWidget::select*``` and ```XmlParse::select*``` to use a new ```SkinContext``` class that contains the current state of the variables in the current context in the skin.

There are three ways to reference variables in a template:
* By name: ```<Variable name="deckNumber"/>```.
* By name with format: ```<Variable name="deckNumber" format="[Channel%1]"/>```.
* By Javascript script expression: ```<Variable name="numPlayers" expression="parseInt(numDecks) + parseInt(numSamplers)"/>```.