Picklist: assume client always passes in objects

Instead of making the picklist more complicated by dealing with either
an array of basic values (strings or whatever) and turning those into
objects with "value" properties, we will now assume that the client
always passes in objects with a "value" property (and probably a "key"
property as well, though the picklist editor will create one if none is
supplied). This simplifies the picklist code significantly.
Picklist: Make client responsible for save/reset

After looking at how the picklist interacts with an actual page like the
project settings page, I determined that the "Save List" and "Reset List"
buttons would have to go. The interaction between them and the "Save"
button at the bottom of the page was just too confusing and had too much
potential for users clicking "Save List" and thinking their edits had
been persisted, when in fact the edits would not actually be persisted
until they clicked "Save" at the bottom of the form. So now the picklist
will update the client-supplied data "live" as users make edits, and the
client code will be responsible for doing a Save, and/or supplying a
reset button if desired.

This simplifies the picklist code IMMENSELY, though the client code will
necessarily become more complex. But the picklist code is now concerned
only with operations that are properly within its scope.
Project settings page: improved UI

* The "Show in user's profile" checkboxes are now separate from the
  "edit list values" ability.
* The Save button is now fixed in place, rather than disappearing
  beneath the bottom of the screen if a long picklist is being edited.
* There is now a red "You have unsaved changes" reminder next to the
  save button when, and only when, there are unsaved changes.

There is no reset button to revert changes, though one could probably be
added if the feature is desired.

This commit also cleans up quite a bit of now-unused code from
projectSettings.js: code which now lives in the picklist directive.
Picklist editor: ignore Enter in picklist inputs

When the user is typing in a picklist input and they press Enter, by
default this will submit the form, which is NOT what the user probably
expects. Instead, pressing Enter should just blur (remove keyboard focus
from) the input field being edited.