Add before_item_moved event

This event gets called just before `util.move` with the same arguments
as the `item_moved` event.
Start version-number-bumping utility
Merge pull request #742 from tsigo/rs-before_item_moved-event

Add before_item_moved event
Changelog for #742
Fix web plugin scroll and lyrics newline bug
Release script: build command
Release script: extract changelog
More elegant fix to line break display problem for lyrics in web plugin

The javascript `replace` method was previously being used, which worked in a hacky way.
But the more elegant way to do it, as suggested by minitech on this question http://stackoverflow.com/questions/23440298 ,
is to use CSS, and make the browser automatically display white-spaces using `white-space: pre-wrap`
add buckets plugin + tests

Add a new template functions %bucket(text, field) for path formatting.
improve detail display and scrollbar in web plugin

Moved track, format, lyrics, etc. to separate div with id 'extra-detail'
so that theses can scroll independent of the main details(Title, Album, Artist).
Split the templates and javascript rendering objects accordingly.

This has a better scrollbar display than the previous commit.
fix range upper bound + tests added
add bucket plugin doc
Update bucket.rst
Update bucket.rst
include bucket.rst in toc tree
Update index.rst

indent line
cleanup docstrings and add tests
Make _formatted_mapping lazy and an instance

The motivation for this is to increase the performance of template evalutation.

Previously, the `model._formatted_mapping()` method returned a dictionary that
served as the environment (mapping of variable names to values) when evaluating
a template. To populate the dictionary, we iterated over all keys in the model,
formatted the values, and assigned it to the dictionary. This meant we
formatted every field, even if the template did not require it.

With this commit `_formatted_mapping()` does not return a populated dictionary
but a proxy (or view) instance. The object only knows about the model and the
keys it provides the formatted view for. If a variable is requested by the
template it computes the formatted value on the fly.

The class-based approach has one additional advantage: In the future, we can
separate the formatting logic from the database logic.
Merge pull request #751 from sampsyo/lazy-formatted-mapping

Make _formatted_mapping lazy and an object
Make FormattedMapping behave more like a dict

The collections.Mapping abstract base class provides all the nice dict-like
functionality we need.