handle refs with / properly, fixes #36

With this patch, Klaus handles git refs with a slash '/', e.g. feature/foo correctly. The URL structure remains the same, but there is no longer a difference in `<rev>` and `<path>`.

Any URL is bit by bit checked if it contains a valid ref:

    -> /klaus/tree/foo/bar/setup.py
    <- foo/bar/setup.py (no)
    <- foo/bar, setup.py (yes, foo/bar is a valid ref)

For URL reconstruction, url_for(view, ...), there are still `rev` and `path` arguments. The view on the other hand, joins both parts to a single URL (and splits them (again) into rev and path).

Tarball filenames for branches containing a slash are substituted with a hyphen, so project@foo/bar becomes project@foo-bar.tar.gz
The new download functionality works on branches and branches may contain slashes ;)