Use manifest file for master key, branches and packs (REPO FORMAT CHANGE)
Generate a Repository ID and verify it in the manifest (REPO FORMAT CHANGE)

This is a simplification and defends at someone maliciously switching
around different sign+encrypted manifest files of the same user. This
way we verify the repository we read is the repository we want.

Repo ID is not secret. Only requirement is that the same user does not
generate the same repo id more than onece.
Update README
Fix reST syntax in README
Fix incompatibilities with bash
Fix quoting of '$' for grep
Big coding style shakeup, use Titlecase and lowercase variables
Replace use of printf and echo with a safe variant

Use  cat <<EOF  etc for safe output of all data to pipes (mostly that we
don't know what the shell does with echo and printf).
Use utility functions for testing for equal and null strings

This way we do not show any sensitive data to the [ program.
Use git rev-list --stdin and cat-file --batch-check
Allow pushing into an empty repo using gitception://
Simplify isnull to use case
Implement stable sort (Lacking in POSIX)
Fix trap resets
Use a shorter repository id in the URL, to simplify a tiny bit
Simplify sort_stable_k2
Fix microissues
Update README
Use a separate symmetric key per packfile (REPO FORMAT CHANGE)

A separate key per pack is simpler and costs us very little; with
repack changes later it will be possible to change keys regularly.
Use 'initial commit' as message for gitception commits