Allow dynamic destinations

Lets you specify a destination as a function, e.g.

```javascript
grunt.initConfig({
  open: {
    url: function (env) {
      return 'http://localhost:'+envs[env].port;
    }
  }
});

var envs = {local: {port: 8080}, test: {port: 8081}};

grunt.task.run('open:local');
```