first half-attempt at a flexible attribute schema

This uses two tables, item_attributes and album_attributes, as key/value
tables for the respective entities. Plugins register fields, at which point
they are magically materialized as properties on Items (Albums are not done).
This currently supports adding and modifying these fields but not retrieving
them (which will need some sort of join).
An attempt at flexible attributes with plugin namespaces.
Mostly untested.
Started hacking `CollectionQuery` to search flexible attribute fields.
Fixed up a couple of query classes for flex attr support.
ironing out some kinks
Code for reading attributes from concatenated flex columns into dicts moved to an outside methods to make it usable for both BaseAlbum and Item objects.
Merge pull request #208 from steinitzu/flexattr

partial flexattrs
experiments with "un-registered" flexattrs
get and set flexattrs with hyphen keys

Here's another little experiment: to make flexattrs a little easier to use for
end users, you can now get and set them by using 'namespace-key' as the
argument to __getattr__ or __setattr__.

For example, try:
$ beet mod foo-bar=baz
$ beet ls -f '${foo-bar}'
baz
baz
baz
...
reduce redundancy in item queries

Now the SELECT query for items only appears in Library.items(). All other
functions that retrieve items go through this method. This should make it
easier to change the way flexattrs are picked up.
merge with master

We should work off the latest changes because of the recent changes to the
Query class hierarchy.
Don't consider text between parentheses when 
matching url title with song title.
Some tweaking to yield better results by not 
rejecting valid lyrics.
Logging: remove match ratio, add source website name
Merge pull request #339 from KraYmer/lyrics-enh

lyrics: google backend should turn up (even) more results
changelog for #339
bpd: Use AnyFieldQuery when searching "any" fields

BPD hadn't been ported when AnySubstringQuery was removed, resulting in
crash, death and horror when using the search function.
Merge pull request #340 from laarmen/fix_bpd_search

bpd: Use AnyFieldQuery when searching "any" fields
changelog for #340
travis: don't --use-mirrors with pip

Since the CDN was added to PyPI, --use-mirrors just makes things slower and
less reliable.

http://comments.gmane.org/gmane.comp.python.distutils.devel/18440