MBS-7880: Release editor should have options to copy only titles or only artists to recordings, instead of always both
Order releases table on /cdtoc/ pages like on other pages which list releases
/ws/js/edit allows invalid dates to enter the database when javascript validation was bypassed
Don't ISE trying to sort invalid dates.
Split out partial-date validation into an MB::S::Validation function, use in both form field and /ws/js/edit
Implement some core entity model methods via %ENTITIES

This adds a "_type" method to core entities' models, which returns the
entity type name, and adds a "mbid/multiple" flag to %ENTITIES for
entities that may have multiple MBIDs (via redirection). Together,
this allows for implementing the "_entity_class", "_table", and
"_gid_redirect_table" methods in Data::CoreEntity, in a generic form.
The individual implementations in Data::Area, Data::Artist etc. are
accordingly removed.
Factor out date periods into an entity role

Most entities that support a date period (begin date/end date/ended)
did this via the Age role, although that didn't make sense for all of
them (Alias). The Link entity, on the other hand, had its own
implementation of a date period.

To remove the duplication, a new DatePeriod role is introduced, which
is used by Link, Alias, and Role::Age.
Don't treat a year of 0 as no year, in JS formatDate
Pad negative years correctly, in JS formatDate
MBS-5961: Fix parsing of BC dates in search results

The code to parse dates in search results didn't account for negative
year values, instead interpreting the digits of the year as month and
day, with funny results.
Replace as_auto_edit and asAutoEdit with make_votable and makeVotable
Change the auto-editor checkbox into a checkbox for leaving edits open and make it available to all editors (MBS-1479)
Merge remote branch 'origin/beta' into editing-make-votable

Conflicts:
	lib/MusicBrainz/Server/Controller.pm
Merge branch 'beta'

* beta: (58 commits)
  silence another warning about undefined values
  Silence a few warnings about uninitialized hash values.
  Un-inline code from the Unicode::Encoding plugin
  Support newer JSON decoders that produce JSON::false values instead of the string 'false', in WS::js::Release test.
  Fix up a variety of tests.
  Fix an "uninitialized value" warning
  Get rid of an unncessary list
  MBS-7916: Fix "Set track durations" preview
  MBS-7915: Show tracklist on "Set track durations" page
  Remove unused search template
  Add alt tags to images which are missing them
  Don't require a disc ID in /ws/2/discid/ when a TOC is provided (MBS-3725)
  Use existing editor data in place tests
  Use "limit=max" for MediaWiki API requests
  Reorganize the string cleanup functions
  Fix tests for Perl 5.20
  Fix index update script
  MBS-7831: Order "Votes by (editor)" list by time of vote
  Update translations from transifex.
  Update pot files using current code and production database.
  ...
More sanity checks for medium edits

Add sanity checks to "Add medium" and "Edit medium" edits to make sure
the new tracklist only uses track IDs that currently belong to the
medium (i.e. none in the case of "Add medium"), because otherwise the
edit may cause tracks to be stolen from unrelated mediums. (Perhaps
related to MBS-7846.)
MBS-6011: Remove some direction marks from strings

Via users copying and pasting names, tracklists etc. from documents
containing mixed left-to-right and right-to-left text, strings with
unnecessary direction marks (left-to-right mark LRM, right-to-left
mark RLM) reach the database.

The direction marks only influence the rendering of adjacent
non-strong (weak or neutral) characters. When placed between two
strong characters or between a strong character and the boundary of
the string, they are therefore without effect and can be removed
during string sanitization.

This is implemented here, together with a removal of LRM/RLM from all
strings that don't contain any right-to-left characters. Analysis of
the strings with LRM or RLM currently in the database indicates that
those two cases cover most of the examples that occur in practice.
Use entity property mbid/multiple for statistics

The statistics collector for the total number of MBIDs (ab)used the
mbid/relatable property to identify entities with MBID redirection
tables, missing tracks. Use mbid/multiple instead.
Don't create entities that are then not used
Factor out "insert" for core entities

The various core entities have similar insert methods. Turn these into
one common method in MB::S::Data::CoreEntity that provides a few
hooks for entity-specific code.
Make "insert" for core entities return a hash

The "insert" method for core entities used to return an incomplete
object, whose only purpose was to hold the ID and MBID of the newly
created entity. Use a more lightweight hash instead.