pooling fixes

Fixes #633. Basically the problem was that pooling wouldn't join a job with `CANCELLED` steps, which can happen when a multi-step job fails in the middle.

Also found and fixed a bug where pooling wouldn't work with `max_hours_idle` because the master bootstrap script was no longer last. We now identify it by its name rather than its position in the list of bootstrap actions.

Updated `mockboto` to work more like `boto`, which was necessary but painful.