Move repl.clj into the source path so that it can be used easily

To use these imports and requires and experimental code, just do (ns user) in
the REPL. Before, you had to manually evaluate the code somehow, e.g. by copy-
pasting the text into the REPL process.
Add work-tree function to hesokuri.git/Context

This lets the context tell you what the work tree is. The default behavior is
to remove the ".git" path segment from the git directory, if the directory path
ends with "/.git"

Also, extend the Context protocol to Map. This lets us tack on extra data to
almost any data structure for allowing it to be used as a Git context.
Properly pass the --work-tree argument to git when available
Rename user namespace to repl

This is to solve a problem with Leiningen trying to load Clojure namespaces
before compiling the Java code, which results in a ClassNotFoundException.
Apparently Leiningen tries to load the 'user' namespace before compiling Java
sources specified in project.clj.
Partial unification of hesokuri.git and hesokuri.repo namespaces

Make hesokuri.repo objects function as hesokuri.git Context objects. This means
a lot of wrapper functions in hesokuri.repo are no longer necessary, so I've
removed them.

Clean up other aspects of hesokuri.repo, like use git/invoke+log where
appropriate for more conciseness.
Fix docstring for hesokuri.git/error?
Make git/invoke support another arity overload

Now it supports all the overloads that git/invoke-with-summary supports.
Create a wrapper for git/invoke-with-summary + git/throw-if-error

This pattern pops up a lot, so make it require fewer keystrokes.