Allow plugins to add field types information for flexattrs

As discussed in #424 here's a proposal based on @sampsyo suggestion.  It allows plugins to define field *types*.

In the plugin ```__init__``` method you can now define the field types like so:

```python
self.field_types['rating'] = float
self.field_types['play_count'] = int
self.field_types['skip_count'] = int
```

```int``` and ```float``` will use the ```NumericQuery```.  Every other value will fallback to the ```SubstringQuery```.  A rudimentary conflict detection is also in place which will output something like this:

```bash
conflicting field type mapping detected. "liveness" declared by "echonest" as "<type 'float'>" and by "mpdstats" as "<type 'int'>"
```

A few examples how this looks like in action:

```bash
beet ls -f '$liveness: $artist - $title' liveness:0.791..0.792
0.791427063558378: Be Your Own Pet - Food Fight!
0.791255853844374: Beastie Boys - Heart Attack Man
0.791988194947472: Cliffy and Jerry - Looking for My Baby
[ ... ]
beet ls -f '$energy $danceability: $artist - $title' energy:0.95..0.99 danceability:0.8..
0.950648388205985 0.862588555530577: Buzzthrill - Everybody in the House
0.960362105796824 0.829378961009966: Los Calzones - Ska del papanata
0.968092780894187 0.826505789137516: Console - Gulls Galore
0.976002526222867 0.852790149199074: Cypress Hill - Psychodelic Vision
0.968634341909428 0.804499237628178: Depeche Mode - The Sun & the Rainfall
[ ... ]
beet ls -f '$play_count: $artist - $title' play_count:1..2
1: Curtis Lee - Pretty Little Angel Eyes
1: The Marvelettes - Beechwood 4-5789
[ ... ]
```

Would this be doable?