Remove date packing and invert date dependency

Before, each year, month, and day field used packing to store its values in the
same tag but at different positions. We then instantiated a
`CompositeDateField` to combine the different values. This lead to code
duplication in the storage styles for these fields. It also inverted the data
dependency. It's more natural to think of year, month, and day as part of a
date then as of a date as composed of these.

Now, only `DateField` class stores data in the files tag. This makes sense: One
tag, one field that accesses it. To obtain access to the year, month, and day
parts, the DateField is equipped with factories that create `DateItemField`
instances associated to a `DateField`. These descriptor allow us to get and set
parts of a date field.
fix #566: vararg_callback(): consume one less element
Save import history only when path associated

Fixes #570
Raise configuration error if BEETSDIR is file
Display MusicBrainz URLs

Closes #574
Fix _safe_cast of ASFUnicodeAttribute

Fixes #578
Clarify debian/ubuntu pip installation.
Add suite function to config command test module

This makes `python setup.py test` work again and fixes #576
Merge pull request #579 from johtso/fix-safe-case-asfunicodeattribute

Fix _safe_cast of ASFUnicodeAttribute
Merge pull request #577 from johtso/show-musicbrainz-urls

Display MusicBrainz URLs
changelog/thanks for #577
add link to Slackware SlackBuild
changelog for #570
changelog (& tiny tweak) for #567
use travis_retry with apt-get commands

Avoid spurious failures on connectivity issues.
changelog for #579/#578
Merge pull request #580 from ian-kelling/master

Clarify debian/ubuntu pip installation.
Merge pull request #564 from geigerzaehler/mediafile-date

Remove date packing and invert date dependency
Move mediafile cast logic to storage style

StorageStyle.get should return a python builtin type.
This amends 5716cd10240a2bda57abfa8d3bc700b0d2a89643