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.
Added Discogs search plugin.
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.
Add a lyrics backend that scraps results from google custom search api.

Add a 'fallback' option to facilitate working around the 100 queries/day google
limit by marking files as 'visited' so they are not considered for lyrics search
on the next beet run.
I've put my own google_engine_ID as default value in the code but could be
reconsidered, this engine contains databases known to be scrappable by the
plugin algorithm though.
lyrics: restore tags write and fix extract_text()
Code style + fix doc typo
hard limit on guessed filename length
Compute Content-Length to make tracks seekable in most players via the web plugin
Merge pull request #246 from xhochy/feature/add-content-length-header

Compute Content-Length to make tracks seekable in most players via the web plugin
merge
changelog for #246