Add QuantityHandler

Similar assumptions as in TimeHandler (see #49):
* ~~The equality field is a simple, human readable string representation.~~
* ~~Ignore lower/upper bounds when searching.~~
* ~~Ignore decimal places beyond PHP's build-in "14 significant digits" string conversion.~~
* ~~StringHasher is used to be able to have a maximum length. Otherwise it would be unlimited since the unit doesn't have a limit.~~
* Order by float value. Ordering by unit doesn't make any sense.
* No unit conversion (for now, may be implemented in a future version).
Why use getValueFloat? That would throw away precision. The database fields are declared to be DECIMAL, so we should pass them DECIMAL strings. Sure, floats might be good enough for the search index - but in that case, make the database fields floats too!