Glyph size selection

Addresses https://github.com/KSHSK/WAVED/issues/78

Things of note:
-To ease testing, I added a GlyphSizeSelectionProperty to ButtonWidget. This MUST be removed before merging.
-WidgetViewModel.\_boundData is no longer an array of Strings, but an array of objects with the structure { name: <bound data name>, fields: <the column headers> }. Thus, any references to the bound data have been updated to account for this.
-ArrayProperty originally returned a state for state._options, this has been changed to state.options to make things more consistent. This is a breaking change that will mess up any state that used an ArrayProperty before this.
-ArrayProperty's template has been updated so the display can account for objects as well as strings. If passing an object to an ArrayProperty's options, the object must have a "name" field to "stringify" itself. Otherwise the object itself will be shown in the dropdown list (this is fine for plain strings and numbers).