Matching

This is based off the requirejs branch so it includes those changes too. Most of the server bits here are by Ian (see commits), I just made a few bug fixes.

For the clienty bits I've used lodash and knockout to make things less painful. Lodash is huge and we probably won't use the majority of stuff it provides, so I added a new resources manager command that creates a (much smaller) custom build.

The version of knockout here is 3.2 which should be released any day now AFAIK, and I'm using it for the cool "components" feature it has, which lets you use custom HTML elements (like `<matching-form></matching-form>`) and load templates for them asynchronously using requirejs (here it's used for the matching dialog template). The templates are loaded using the requirejs text plugin. The r.js optimizer also has a flag where you can inline the template source into the javascript (which I've turned on).
It works like the external links UI we have in MBS, where there's initially one empty input to paste an MBID, and when that's used up it automatically adds another new empty field to paste in (which is what adding the Entity with a blank MBID does).

The canSubmit thing is checking that there's something to submit, i.e. all the fields aren't empty (or should that be a valid submission? should someone be able to just clear the current match?).

"empty" here might be a misnomer since it counts fields that have an invalid MBID as empty. Empty here actually means "is there loaded entity data associated with this field."