MBS-7373: Edit diff for reordering is misleading

This changes the logic used to determine track MBID/recording changes.

Since you can't "reuse" a track from another release (at least not
through our UI), the only way you'll get a new track MBID right now
is if you actually remove a track and add a new one. So the logic
is now to simply check if the new track data for a certain position
already has an id (if it does, it was moved, so it's not changing).

To detect recording changes, it now does a set difference between
all the previous recordings and all the new recordings for existing
tracks. So the recordings that changed for existing tracks are
$new - $old.
Merge branch 'vacuum-full'

* vacuum-full:
  Replace VACUUM FULL ANALYZE with the non-FULL version, to avoid locking and hopefully prevent some database weirdnesses.
Merge branch 'beta' of https://bitbucket.org/metabrainz/musicbrainz-server into mbs-7382-3
mbs-7382/7383: add choir and orchestra to stats, make them behave like groups
mbs-7383: add stats collecting for choirs and orchestras
Merge remote-tracking branch 'reosarevok/choirchestra-stats-collection'

* reosarevok/choirchestra-stats-collection:
  mbs-7383: add stats collecting for choirs and orchestras
Fix logic in 647535f

Changes are now replaced with insertions/deletions if the track ids
are different.

Instead of keeping track of changed recordings using a set difference
(which fails to find recordings that were switched around), we now
keep a map of ( track id => original recording id ), and see if any
of the new recording ids differ.
MBS-7367: beta: error when adding disc ID with new release

Another silly bug caused by 522a468.

tmpPosition is the position of a medium as it's being submitted
before any reorder edits, to avoid position conflicts with already-
existing mediums. The property only exists in those circumstances,
and is otherwise undefined. So now we fallback to position() in the
cases where tmpPosition is undefined.
MBS-7387: ISWCs not correctly displayed

The template for work pages tried to display the ISWC object instead
of accessing the string inside it, in the description meta tag.
Therefore, "MusicBrainz::Server::Entity::ISWC=HASH(0xdeadbee)" or
similar was output.
mbs-7388: add constraints to avoid gendered orchestras and choirs
mbs-7388: fix constraint for null type
mbs-7388: add upgrade script
Merge remote-tracking branch 'chirlu/mbs-7387' into beta

* chirlu/mbs-7387:
  MBS-7387: ISWCs not correctly displayed
Merge remote-tracking branch 'bitmap/mbs-7373' into beta

* bitmap/mbs-7373:
  Fix logic in 647535f
  MBS-7373: Edit diff for reordering is misleading
Merge remote-tracking branch 'reosarevok/mbs-7382-3' into beta

* reosarevok/mbs-7382-3:
  mbs-7382/7383: add choir and orchestra to stats, make them behave like groups
Merge remote-tracking branch 'reosarevok/mbs-7388' into beta

* reosarevok/mbs-7388:
  mbs-7388: add upgrade script
  mbs-7388: fix constraint for null type
  mbs-7388: add constraints to avoid gendered orchestras and choirs
Merge branch 'master' into beta
Merge remote-tracking branch 'bitmap/mbs-7367' into beta

* bitmap/mbs-7367:
  MBS-7367: beta: error when adding disc ID with new release
Update translations from transifex.
mbs-7401: Non-group artists stat shouldn't count orchestras and choirs