Metadata editing

This addresses issues #175 and #390.

Long metadata no longer overlaps on the page.  Instead, long keys or values occupy more vertical space, word wrap when possible, and excessively long parts are hidden.  The edit field for value has been switched to a textarea so that the user can see more of the value.

Metadata values that are objects are JSON.stringified for display.  If the entered value can be JSON.parsed, it is converted back to a object.

Metadata is sorted by key.

I switched the default sorting of collections to use locale-based comparison.  As part of this, I changed users so that they are sorted by lastName, firstName rather than just lastName.  The locale-based comparison is based on the web client's locale (which, depending on browser, will either be their machine's locale or the browser's locale setting).  It is slower than the 'C' comparison that was being done, but should still be fast enough if we page data.  We should try this on a very large collection.
In other places, we are using something closer to jsdoc-style annotations (which looks like javadoc). We should decide soon on what tool we are going to use for automated docs for our javascript codebase, so we can settle on a uniform syntax.