New media sync protocol and updates to media handling

The main features of this commit:
1 - Port of the new media sync protocol (released in Anki 2.0.27)
2 - Cleanup and update of Media.java to match Anki 2.0.27

Things to note about this commit:
- Tests for the Media class have been ported over.
- A new media database format has been added with the extension ".ad.db2". The .ad prefix is specific to AnkiDroid to prevent issues caused by copying the file to the desktop or vice versa. If an old media database is found, it will be converted to the new format (and if it fails for some reason, it creates a new empty database).
- File names are now normalized in NFC form before being added to the database and/or synced (previously used NFD, which is not the format used by Anki)
- Media-related regular expressions have been fixed and the group indexing scheme documented (Java doesn't support the named groups that python uses)
- Previously, a clean copy of the media database was cloned from the assets folder. With this update, it is created at runtime with SQL, so the file in assets has been removed.

Known issues;
The multimedia note editor bypasses the Media manager for most of its tasks which could lead to inconsistencies in the future.