Check system status in DISCOVER state

Instead of checking the availability of the Docker and Consul APIs only
in the INIT state after startup, check it in the DISCOVER state. This
allows periodic retries after failures.
Retry with exponential back-off in case of failures

In case of any unexpected errors, the FAILED state is entered. The
BoxRunner sleeps for a while before restarting in the DISCOVER state. In
case of repeated failures, the sleep time doubles on every failure (up
to a maximum of 5 minutes).

The sleep time is reset to its initial value of 1 second if there is no
failure for twice the last sleep time.