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
When traversing the path and checking if the current part is a ref, Dulwich throws an IOError, when you "request" a file, that is actually a directory. The expected behavior should be a KeyError, because the commit does not exist.