Refactor Autocomplete.js

 * Refactor Autocomplete.js to use jQuery UI's `$.widget` API. This improves
   the structure and allows us to avoid hacking around too many internal
   `$.ui.autocomplete` variables and timers, or at least lets us do so in an
   obvious way. Previously we had an MB.Control.Autocomplete "constructor"
   which managed not only its own internal state (`self`), but also the
   autocomplete's (`self.autocomplete`) inside a bunch of closures. The
   `$.widget` method just inherits directly from `$.ui.autocomplete`, so
   there's only one object to manage - and it's easier to override default
   functionality on it. Fixes MBS-6689 and hopefully makes the code less of a
   headache.

 * Remove MB.Control.Autocomplete, since it no longer serves any purpose.
   MB.Control.EntityAutocomplete remains and is used by forms that need their
   hidden inputs managed. Forms like the relationship editor can just use
   `$input.autocomplete(options)` directly.

 * Make the autocomplete's `currentSelection` variable an observable, so we
   can watch the selection for changes without listening to DOM events.
Rewrite ArtistCredit.js as a knockout view model

`MB.Control.ArtistCredit*` now inherits from `MB.entity.ArtistCredit*`, adding
methods for guess case, auto join phrases, hidden inputs, etc. They act as a
view model for knockout. The template MACROs `form_row_artist_credit` and
`artist_credit_table` are now rendered by knockout. One small problem was that
FormHandler forms needed to pass the artist credit field data to knockout
somehow. For that I added a `Form::Field::ArtistCredit::json` routine which is
called from the template and stuck into an HTML data attribute.
Merge branch 'beta' of bitbucket.org:metabrainz/musicbrainz-server into mbs-6689

Conflicts:
	root/static/scripts/common/entity.js
Use to_json instead of returning string
Update HACKING.md wrt phantomjs, remove calls to xvfb

PhantomJS is "pure headless" since version 1.5.
Do async caa tests correctly so they don't sometimes fail
Add MB.Control.ArtistCredit unit tests
Merge remote-tracking branch 'origin/beta' into mbs-6689
Merge remote-tracking branch 'bitmap/mbs-6689' into beta
Merge remote-tracking branch 'bitmap/phantom-fix' into beta