Added
-----
* Can now get tags from any :py:class:`.MusifyItem` and set tags on any :py:class:`.LocalTrack`
using the relevant :py:class:`.Field` enums
* Equality comparison methods to all implementations of :py:class:`.Filter`
* :py:class:`.BasicLocalCollection` for creating and managing arbitrary local collections
* :py:class:`.MusifyEnum` now displayed correctly when outputting to ``json`` on :py:class:`.PrettyPrinter` objects
* :py:meth:`.LocalTrack.move` and :py:meth:`.LocalTrack.rename` methods to handle moving the file on the disk.
* Set the ``path`` and ``filename`` properties on a :py:class:`.LocalTrack` to defer the movement of a file on the disk.
Setting a new path in this way does not immediately move a file.
Instead, the file will be moved when :py:meth:`.LocalTrack.save` is called with a ``path`` type
tag field as an argument.
Changed
-------
* Track number zero fill amount is now calculated from the track total value
when writing track tags on :py:class:`.LocalTrack`
* Simplified ``dict`` output from :py:class:`.FilterComparers`
* Field names displayed as lower case in ``dict`` output on relevant :py:class:`.PrettyPrinter` implementations
* Expand logging for results from saving tracks on local collections
Fixed
-----
* Drop ``null`` responses from Spotify API which cause bugs in execution logic
* Bug in :py:meth:`.LocalLibrary.load_tracks` that would cause it to store ``None`` when the track could not be loaded