Add environment lock/unlock/locked handling

This PR adds support for `deploy:lock` and `deploy:unlock` tasks.

These tasks are intercepted and handled separate from any provider.

When an attempt to deploy to a locked environment is made, we'll send up an error deployment status with a description including who locked the environment.

Addresses #55 
Here's we're setting setting `.testing` to true so `Deployment::Status` will store payloads in a `.deliveries` array instead of sending them to the notifier. Similar to how Action Mailer operates during testing.