Add MediaFile.fields() method
Add MediaFile.update() method to supersede save()
Test that we can migrate ITEM_KEYS_WRITABLE

The test show that we can replace the hard-coded `ITEM_KEYS_WRITABLE` constant
with the computed value derived from `MediaField.fields()` and ITEM_KEYS. This
will be done in the next commit.
Compute ITEM_KEYS_WRITABLE

See 65d64a7d50612df4ee6127ff05e591ae6fcceac0 why this is possible.
Add LazySave tests for MediaFile
MediaFile can be extended with custom fields
Use indexed format with python26
Use readable_fields() to replace ITEM_KEYS_META
Migrate ITEM_KEYS_META
Read custom fields into database
Add Item.media_fields

This new property controls which fields to read from a media file.
Remove ITEM_KEYS_WRITABLE
Plugins can now extend MediaField
Remove lazy update from MediaFile
Merge branch 'extendable-mediafile'

Conflicts:
	beets/library.py
	docs/dev/plugins.rst