Master Reannounce

**NOTE**: @guidow, please review but do not merge.  There's conflicts between this pull request and #70 that I will need to manually handle.

This change set should allow the agent to reannounce itself to the master at a frequency determined by the `--master-reannounce`.  A few behaviors govern the timing of the announcement:

* The last the time the master and agent communicated with each other.  This is not automatic instead it's controlled by the last call to `config.master_contacted()`.
* The agent is already in the process of announcing itself
* The agent failed to announce itself either due to a bad request or an unhandled non-server related error.  We don't retry these cases because we'll eventually rerun the request anyway.

This also fixes #27.