Implemented Avenge.

Also cleaned up the program flow around Secrets.  Now Secrets are
 automatically deactivated when reveal() is called.  This has the side effect
 of requiring all Secret's activate methods to use bind instead of
 bind_once, or deactivate may try to remove an event that has already
 been removed.
Merge remote-tracking branch 'origin/master'