Extracted ISerializationService

- Removed Serialize() method from all IMedia derived types.
- Created generic SerializeCollection(), SerializeItem(), Deserialize()
methods in ISerializationService class so serialization can easily be
mocked in unit tests.
- MediaList is no longer abstract. Reworked the serialized file path
property so that derived classes define their own FileName. Serialize()
and Deserialize() are now a wrapper around ISerializationService so it
can be easily mocked.
- Added a ton of unit tests.
- All of this in prep for adding fav/worst movie feature since I needed
a way of specifying the path to the serialized file instead of
MovieList/MediaList hard defining it. Also to increase unit test
coverage.