get-dir: handle None created-by

created-by can be None when repository has
no tags/branches and tags/branches directory
listing is requested
ls-tree: handle None sha1

sha1 can be None when repository has
no tags/branches and tags/branches directory
listing is requested
get-props: handle None sha1

sha1 can be None when repository has no tags/branches
and props for tags/branches are requested
git push: pass --porcelain

Without --porcelain, git push prints output info
on stderr, what confuses __get_git_data
Delete SVN backend

We're git-svnserver, not svn-svnserver.
Delete get-file-revs, rev-proplist, switch

Looks like simple Subversion workflow doesn't use these commands
server.py: remove unused __main__
auth.py: delete DummyAuthDb, PEP8
auth.py: store username in SvnRequestHandler

In order to properly support multithreading,
connection-specific info must not be stored in shared
objects. Thus, move username from Repos to SvnRequestHandler
repos.py: replace UnImplemented with NotImplemented

NotImplemented is a standard python exception, just use it
repos.py: remove abort_commit()

Delete abort_commit() function, it doesn't do anything useful
repos.py: inline get_base_url()
repos.py: introduce repo lock

Introduce a per-repository lock. Thread-unsafe commands now use @need_repo_lock decorator.
For now, thread-safe commands are `reparent` and `auth`.
commit.py: eliminate static dirs/files cache

In order to support multithreading, connection-specific info must not be stored in shared objects.
Thus, move Dir.dirs cache into Commit command.

Files.files cache isn't read by anyone and is simply deleted.
Use threading instead of forking

By switching from fork to threads we open an
opportunity to build proper Git<->SVN mapping cache
and keep it in-memory.