Bug 844363: better tests for mozpool; r=mcote

Because 80% test coverage is good enough for anyone.
Bug 846542: store current and next image separately in the devices table
Bug 846543: Generalize async operations, use that in the BMM API

This also adds support for asynchronous HTTP requests, and uses those
from the request machine.
Bug 826746: notify mozpool when lifeguard is done with an operation

This notifies when entering the 'ready' or 'failed_*' states.

Mozpool also tries another device when it gets a failed-bad-device
result from lifeguard (bug 819085)
Bug 837241: prefer SUT over ping when it's available
Bug 834568: self-test on failure, related changes

In addition to self-testing on failure, this does a bunch of little things:
 * eliminate the free state
 * show requests in the lifeguard UI (with API change)
 * makes failed-request states expirable
 * eliminates the now-unnecessary 'closing' request state
 * power-cycles during the sut_verifying process, per dividehex's suggestion