provision/docker: don't ignore deployment failure
exec/testing: added FailLaterExecutor
provision/docker: fix bugs in dockerProvisioner.Deploy

There were two bugs related to deployment failure:

  1. The provisioner was ignoring failures from the container.deploy()
     method. So, whenever the deploy failed, the unit would get removed
     and the app would become unavailable.
  2. The provisioner wasn't rollbacking the container on failures. This
     way, by deploying broken code, apps would be able to get more
     units than its quota allow.