Long, long day coding up the direct mode guard today. About 90% of the fun
is dealing with `receive.denyCurrentBranch` not preventing pushes that
change the current branch, now that core.bare is set in direct mode.
My current solution to this involves using a special branch when using
direct mode, which nothing will ever push to (hopefully). A much nicer
solution would be to use a `update` hook to deny pushes of the current
branch -- but there are filesystems where repos cannot have git hooks.

The test suite is falling over, but the `directguard` branch otherwise
seems usable.

----

Today's work was sponsored by Carlo Matteo Capocasa.
