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
I don't like the `IOError` here, I'll try to fix this upstream, it should always result in a `KeyError`, even when I'm retrieving a non-existent directory.