Machine properties

## Lexical Variables (scoping)

Major changes:

 * Creation of parameters within functions / local scopes which don't interfere with global variables.
 * Renaming in-place.
 * Different display names and variable names, serialised into the textual field value.
 * "Flydown" UI with getters / setters from relevant blocks.
 * Heirarchical variables created from machine components.
 * Read-only variables that do not appear in setter dropdowns.
 * 

Parts of this change are based on or directly use code from the MIT App Inventor project.

Also had to include some files from google closure which are not included in the standard Blockly compiled distribution.