Plugins can define types of flexible fields

This partially solves #647.
Add tests for plugins providing flexible field types
Add 'types' plugin for flexible field types

Conflicts:
	beets/library.py
Fix tests on python2.6
echonest: set types for flexible fields

Conflicts:
	beetsplug/echonest.py
mpdstats: set types for flexible fields
NumericQuery: Check that the field exists
Use NONE type affinity for flexattr value column

This is what we should have been using all along---since it allows any type to
appear---but we didn't. :cry:
Docs for types plugin
Document flexible field types in plugins
Merge branch 'flextypes'