Deployer

Adds a deployer component, which uses the queue (#547) to schedule deployments using different strategies (currently one-by-one or all-at-once).

Resolves #602.
I think this defer needs to be moved to before `Perform` (it doesn't need to run if `GetStrategy` fails), and it should send a "failed" deployment event so listeners are aware the deployment failed.