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 
It's to prevent tests from messing with the default `Heaven.redis` instance. Here I'm switching to a different database number on `localhost`.

We could alternatively use something like [fakeredis](https://github.com/guilleiguaran/fakeredis) or [mock_redis](https://github.com/causes/mock_redis) during testing.