Add variable substitution support to SkinContext::select* methods.

* Support referring to variables by name (with optional format string) or by
  evaluating ECMAScript expression with a <Variable> node.
* Support setting variables with a <SetVariable> node.
* Add a test suite for SkinContext.