When configuration consistently fails on boot, set the router status to DOWN.
If a VM goes to `DOWN` state during CheckBoot, restart the VM.
Stop asynchronously checking for boot if the router goes into ERROR state.
Fix state of router when we notice it is missing

We used to rely on receiving an event to know that a router had been
deleted. We're going to be filtering that event out (see subsequent
changesets), so we need to properly detect that a router VM is gone and
mark ourselves as down so the automaton can reboot us.

Change-Id: I287a8dcc208bc709687cf63a0f17ace25265d178
Ignore POLL requests when in an error state

There is a race condition between setting a router into an error state
and receiving a poll request from the health monitor. If we do see a
poll request, ignore it and no-op the transition back to CalcAction
instead of resetting an error state that may have been set after the
poll action went into the queue.

Change-Id: Ie82d937812b79357bdcda13dd11aa3a3d732a0dc
Ignore notifications caused by RUG actions

Ignore notifications where the context user is the same as the RUG's
user, so we don't make more work for ourselves and so we can properly
handle the error loop detection without race conditions.

Change-Id: I16140ead173b7fb2caedec1b69f1271f9f99f51c
fix existing tests

Change-Id: I26bae0051454e9ba33fe85af41e7c0242c8c8f49
respond to comments

Change-Id: Icaebf5f084c6921558c3e57c06babfec253f7396
add tests for ignoring notifications

Change-Id: Ifdf0a8a3ecc06cf5b6779269f573be598905c87d
add test for CalcAction/ClearError interaction

Change-Id: Ie2747d080950b1f64bb6f5603efb2903812b524c
Merge pull request #162 from dhellmann/boot-time-loop-detection

Boot time loop detection