First commit (mostly working)

- Made the FieldLexicalVariable dropdown accept and process submenus.
- Such values are stored as arrays. Made everything play well with such
arrays.
- Made the variables rename correctly in a FieldLexicalVariable.
- Special function for renaming machines.
- Updated math_change block to use Lexical Variables.

But - XML serialisation does not work with array values. Variables might
have to be serialised as strings somehow.
Fixed missing names and tooltips
Factor out Block.getAncestor()
More blocks functions
More variables functions
VariableScope functions; flatten
VariableScope.addVariable
Trying to figure out variable creation / deletion
Scoping sort-of working
Scoped variables working

Need to test nested scopes!
Working on getters/setters
Allow variable getters/setters to be moved around.

Need to implement renaming on child blocks.
Fixed bug
Add setParent override

Need to set name earlier (before workspace changed event is called) to
prevent the parameters in callers getting messed up.
Fix bug with names typed in parameter field.
Allow validName() to return the current name
Don't allow blank variable names
Change todo
Enable Variable SubScopes
Working towards attributes