rewrite in Go

This also includes some clean-up of the documentation and a few other
differences with the original C implementation:

* A gpg agent is now required. This is caused by GnuPG2, so, in theory, using
  GnuPG may still work, but the passphrase_cb code is really ugly and I wouldn't
  use it anyway, so I removed it.

* The "security" checks have been reduced to just get{u,g}id() and RLIMIT_CORE
  (the mlockall() one was pretty much useless, since mlockall() was only run if
  geteuid() == 0).

* Some options were either removed (--tests, --version, --noagent, --nosecure,
  --hide) or renamed (--passwd -> --pass, --nobackup -> --no-backup).

* The locking code is not completely safe/sane, since it allows two different
  processes to open the database at the same time leading to possible read-write
  conflicts (e.g. proc 1 reads db, proc 2 reads and syncs db, proc 1 syncs db).