Add SPOF monkey

The SPOF monkey iterates through nodes in a random order, testing whether the
cluster can make progress if that node is split away from the rest of the
cluster.

This fixes an issue where we would accept a solution which was not resilient to
the failure of a single node.
Actually generate random numbers

This fixes a bug where ~all agents in Octopus were being seeded (nearly?)
deterministically from fixed strings due to a bug in the usage of the hash.Hash
API.
Allow SPOF Monkey to exit early
Fix SPOF monkey

This fixes a bug where only accepted and verified responses would be eligible to
trigger SPOF monkey's "not-a-SPOF" behavior. Now any HTTP 200 response will
work; if a bad response is returned in this way, the agent will be disqualified
later.