Prepare hesokuri.main to implement some extra commands

This is also a clean-up, in order to maintain consistency between new and old
code.

- Functions that calculate a value based on environment variables and system
  properties have been changed to plain variables that are evaluated once at
  start-up. This prevents code from having to bind the function to a local
  variable when using it. This also means config-file is no longer testable, but
  making config-file a function made the -main function more complicated, and
  that function is NOT tested, so overall it was harming stability.
- Add a usage message.
- Rename port to web-port to avoid confusion.
- Used the Java system property user.home rather than the environment variable
  HOME. The latter generally does not have a value on Windows.

Symbols in this namespace are not, and should not be referenced by other
namespaces, so refactoring like this is not risky. Tried all new and existing
code paths to manually confirm functionality.
Readability and documentation adjustments

Prompted by comments in https://github.com/google/hesokuri/pull/13
Merge pull request #13 from matvore/usr-int

Prepare hesokuri.main to implement some extra commands
Move fast-forward? logic from repo to git namespace

This is where the logic should be. Also, clean up tests and make the function
more flexible in terms of arguments it accepts.
Allow unwanted-branches to be specified with hashes

This makes it easy to re-use the same branch name later, without removing it
from unwanted-branches before creating it. This will be supported by the
hesobase, which will have a user interface that makes it easy to add unwanted
branch/hash pairs. Still supporting branch-name-only unwanted sets because these
are simple enough for many use cases and are easy to enter in manually when
using the legacy configuration file.
Introduce a Context protocol into hesokuri.git

This allows the Git command and the repository location to be specified in a
single argument, which removes the need for most of our arity overloads that
take a default Git command path.
Merge branch 'origin-master' into missing-arg

Conflicts:
	test/hesokuri/git_test.clj