Merge branch 'develop'
use bower
major refactoring

Use RequireJS, eliminate the formdesigner singleton with controller,
model, and ui having tangled inter-references including a bunch of event
soup, in favor of well-defined coponents using events only for loose
coupling.

See https://gist.github.com/mwhite/10e42de5b24b3437a610 for additional
explanation.

This removes the recently added duplicate ID renaming on save, in favor
of, when the nodeID property is changed via a widget change,
short-circuiting the change if a sibling has the same nodeID, and then
behaving similarly to when the XPath editor has unsaved changes until
you've finished entering a valid nodeID.  In service of this, the
"unsaved changes" short-circuiting now fires on several other events
besides selecting a node:

- adding a question
- saving the form
- selecting any tools menu item
- moving a question

Currently these are all done explicitly, although it might be possible
to have fewer locations where the check is called by putting it in e.g.
beforeSerialize().

This also manages all of the media uploader dependencies using
RequireJS.

Fixes:

 - #59: use RequireJS
 - #84: choice icon in tree should change when moving from single to
   multiple answer or vice versa
make the UI self-contained, no global IDs
remove add/remove language code

it's never run
change some classes to use prototypes instead of closures for methods:

ItextForm, ItextModel, LogicExpression, LogicManager
misc factoring fixes for the past few commits

(not going to bother trying to rebase these correctly)
add test plugin matrix

note: accidentally added tests/main.js that should be in this commit in
the "major refactoring" commit a few commits back.
allow saveUrl to be a function
allow plugins to define mug types and their places in the toolbar

(parsing logic is still in the parser, see
https://github.com/mwhite/Vellum/issues/95)
misc minor fixes
Merge branch 'refactor-rebase'
update README
requirejs path changes
vellum namespace
Revert "vellum namespace"

This reverts commit 780c137015c93bfddd85e875483da8235514fa78.
use scoped require
use separate RequireJS config file
fixes
re-enable using global copies of libs if already loaded