First commit to add header dropdown
Several edits to header dropdown:

- Style the up/down arrow as a button
- Remove the Actions header
- Remove redundant original "Add media" button
- Style "Add media" and "Create new collection" links as buttons
Give elements proper, more descriptive class names
Fix small user error
Fix header width issue on small screens
Fix header width again: this is a better approach
Edit header styling (add border-bottom, remove background-color); add margin to header_dropdown
Add header_dropdown.js
Audio and video should use workbench instead of tempfiles (#561)

We were using lots of tempfiles in the audio and video processing
backends which worked around our workbench system. Still use the
tempfiles package but create them in the workbench directory. This
can help address the uploads of large files (#419) where /tmp might
be a smallish tmpfs and our workbench a real disk.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Start to use the media_id in "admin" URLs.

We have a bunch of URLs that are more for internal use. At
least they're definitely not intended to be posted
somewhere for long term useage.

When those things affect a media, it's much better to
reference the media by its id. This can't change, ever.
This is better for races.
Like someone posting a comment while the owner
corrects a typo in the slug.
Move logo part into bits/logo.html

To make it easier for themers to replace the logo, move it
out into its own logo.html.
Use the new logo.html thingy in airy.
Improve error message wording (#564)

Improve error message wording if no csf cookie could be detected. Also,
make the error text translatable.
More explicit get_or_create pattern

Don't do "user = getUser() or newUser()" in one line. It is bound to
confuse poor souls. Be more explicit here and even add a code comment.

Thanks to Elrond for not liking the previous pattern.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Simplify check_media_slug_used

Remove the unused dummy_db argument and generally make the function
readable.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Unbreak 301 responses

The move to werkzeug routing went pretty smooth, but one thing was
broken by accident: URLs without final slash result in a 301
werkzeug.routing.RequestRedirect response. We displayed it as a generic
error page rather than actually sending the redirect. Do that. One thing
it does though is to skip all meddlewares, which should be OK for a 301
response, but might need rework if we decide otherwise. With this, 301
responses with lacking final slash are unbroken again.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
#571: Fixed. Display collection description with Markdown formatting.
collections: add support to browse existing collections

- add a route at /u/<user>/collections/ (note trailing 's') that lists
  all existing collections
- move there the "Create new collection" link, if the user is logged in
- add a new link "Browse collections" from root.html
collection browsing: drop atom feed from page template

rationale: it refers to something else than a "collection feed"

thanks to Elrond der Elbenfuerst for pointing this out
collection browsing: remove pagination support

rationale: we do not expect hundreds of collection (and it was likely broken
anyhow)

thanks to Elrond der Elbenfuerst for pointing this out