Master Reannounce

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 `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 error non-server related error.  We don't retry these cases because we'll eventually rerun the request anyway.

This also fixes #27.