Fix web plugin scroll and lyrics newline bug
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.
Property for easy FormattedMapping access
Changelog for faster queries (lazy formatting)
Shortcut some tests in Model initialization

When Model objects (Albums and Items) are loaded from the database a lot of time is wasted checking if the object is dirty and if fields are fixed or flexattr.

This change alow bypassing these checks when we know that the data is correct ; it should only be used when loading Model from the database.

With this, listing all tracks in my test database (8200 items) takes 4 seconds while it took 31 seconds previously.
Fix formatted.get calls
Release script: convert changelog to Markdown
Release script: upload command