Allow Capistrano::DSL::Env#set to recive a block instead of value

Adds syntax sugar for defining lazy variables in configuration.
Consider following example before:
```ruby
set :database_yml, lambda {
  {
    fetch(:rails_env) => {
      ...
    }
  }
}
```
And after:

```ruby
set :database_yml do
  {
    fetch(:rails_env) => {
      ...
    }
  }
end
```

Also it raises the same `ArgumentError` when neither block or value are
passed to maintain the previous behaviour.