remove more unnecessary indirection in widget definitions

all sections simply return a list of property paths now.  Properties are
shown or hidden based on presence of the property definition + the
visibility attribute of the property definition.

If the visibility attribute is a path to another property, then the
property will be visible if that property is visible (this is used for
itext widgets -- the actual display toggling is handled by the id
widgets, though).
move/fix ODK-only question check
fix typo
extract remaining itext classes into higher scope
remove unused function
remove function I commented out because it was unused
cherry-pick a8e12fc561d3904d70e01525e40cca04753925a8

remove code that was never getting run
add a plugin system and start using it for itext

Add a PluginManager class that handles delegating method calls to
plugins.  Can either return an array of all the return values of all
plugins, or have all plugins sequentially process an input value.

Also adds a JavaRosa plugin for Itext.  At the moment I've moved the
itext definition and parsing, widgets, and properties into the plugin,
and am just explicitly referencing the plugin's itext model (which used
to be formdesigner.model.Itext) in the other parts of the code that
still reference Itext.

Now I will extract those other parts out as plugin hooks.
fix regressions from 0ec9384

removing the getItext() method without maintaining the existence check
for mug.controlElement before accessing labelItextID broke things.