Remove trailing whitespace

Editors that strip trailing whitespace litter code changes with extra
changes from striping the whitespace. Prevent this by stripping all
trailing whitespace with
  sed -i 's/ *$//' {src/libjuicer}/*.[ch]

https://bugzilla.gnome.org/show_bug.cgi?id=661646
Use named initialisers in sj-prefs.c

Since we are currently adding more fields to AlbumDetails and
TrackDetails, this makes this initialization code more future-proof.

https://bugzilla.gnome.org/show_bug.cgi?id=661646
Add composer field to track data

https://bugzilla.gnome.org/show_bug.cgi?id=661646
Add composer field to album data

https://bugzilla.gnome.org/show_bug.cgi?id=661646
Add composer sortname to track data

https://bugzilla.gnome.org/show_bug.cgi?id=661646
Add composer sortname to album data

https://bugzilla.gnome.org/show_bug.cgi?id=661646
Bump libmusicbrainz requirement to 4.0.1

This is required to support objects with multiple relation lists, which
are used in the composer metadata parsing.

https://bugzilla.gnome.org/show_bug.cgi?id=661646
Get composer metadata from musicbrainz relations

In Musicbrainz composers are related to works via composer relationships
and works are in turn related to recordings via performance
relationships. Use these to fill the composer metadata. This could
easily be extended to arrangers and lyricists.

Musicbrainz allows more than one relationship list to be associated with
any given object, however libmusicbrainz 4.0.0 only supported retrieving
one of them. This lead to problems getting the composer data for some
albums. Thanks go Andy Hawkins, the libmusicbrainz maintainer for
extending the API in version 4.0.1 to support retrieving all
relationship lists for an object.

Get track duration data from Mb4Track instead of Mb4Recording as the
track data is more accurate. (During testing several albums had no
duration data in their recording objects and some had incorrect data.)
This is how we got the track duration when we used libmusicbrainz3 and
it was reliable then.

https://bugzilla.gnome.org/show_bug.cgi?id=661646
Factor code iterating over relations

fill_work_relations and fill_recording_relations are using the
same code to iterate over the relations contained in a
RelationListList. This commit moves the common code in a helper
function and changes these 2 functions to use it.

https://bugzilla.gnome.org/show_bug.cgi?id=661646
Fill album composer using track composers

Musicbrainz relations do not provide an album composer. If all the
tracks have the same or have no composer use the composer and
composer_sortname from the first track, if they have
differing composers set the album composer and composer_sortname to
"Various Composers".

https://bugzilla.gnome.org/show_bug.cgi?id=661646
Remove deprecated libmusicbrainz methods.

libmusicbrainz 4.0.1 deprecates the mb4_xxx_get_relationlist methods in
favor of mb4_xxx_get_relationlistlist methods to enable access to all
the relationlists associated with an object. Loop over all lists instead
of just the one that was returned with mb4_xxx_get_relationlist.

https://bugzilla.gnome.org/show_bug.cgi?id=661646
Use relationlist_list_foreach_relation in fill_relations

Now that we have a helper to iterate over all relations, better
to use it as much as possible. It would probably be more efficient
to have a relationlist_list_foreach helper iterating over RelationList
items contained in a RelationListList, and a relationlist_foreach helper
iterating over Relation items contained in a RelationList.
This would allow fill_relations to avoid iterating over and over
on the RelationListList while it's always only interested in the
'url' RelationLists.

https://bugzilla.gnome.org/show_bug.cgi?id=661646
Bump libmusicbrainz requirement to 4.0.3

Previous versions no-longer work after a schema update to Musicbrainz.

https://bugzilla.gnome.org/show_bug.cgi?id=661646
Remove call to deprecated mb4_releasegroup_get_type

Libmusicbrainz 4.0.3 deprecates this in favor of
mb4_releasegroup_get_primarytype

https://bugzilla.gnome.org/show_bug.cgi?id=661646
Use musicbrainz5, drop earlier versions

Update sound-juicer to use version 5 of musicbrainz.  This is
mostly a straight substitution (MUSICBRAINZ4→MUSICBRAINZ5,
Mb4→Mb5, and so on).
routines:

Drop conditional support for version 3 of the API, leaving 5
only.

https://bugzilla.gnome.org/show_bug.cgi?id=676749
Don't leak AlbumDetails::artists and TrackDetails::artists

Issue found with valgrind
all: Fix GThread API changes in GLib 2.32

https://bugzilla.gnome.org/show_bug.cgi?id=676748
Updated POTFILES.in
sj-main: Include stdlib.h to have declarations of exit() and atoi()
Do initial port to GStreamer 1.0