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
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.
Add option to extrapolate year buckets names

- spans are now tracked via a list of dicts instead of 2 lists
previously (simpler code)
- extend_year_spans() pregenerates all possible ranges at plugin setup
stage
- a BucketError is now raised if declared bucket format not accepted
Move Model initialization in a separate method

The idea is that we can apply special treatment in subclasses when
needed, especially for path normalization.
Merge remote-tracking branch 'origin/master' into optimize-model-init
fix handling of digits chars in alpha buckets

Characters were search in string.ascii_lowercase that does not contain
digits chars.
Add section listing template functions/fields provided by plugins for path
formatting
fix typo from copy/paste
Avoid duplicating _bulk_update into subclasses
Add text to new _templ_plugins section

Replace links to ‘writing-plugin’ by internal links to ‘templ_plugins’.
Add small paragraph at the end of _templ_plugins to mention ‘inline’
plugin and the ‘Writing Plugins’ page.