allow sftp task to use the shared sshconfig

two bits: 

- allow sftp task to use the shared sshconfig
- allow overriding sshconfig properties in the task config.

The second bit was necessary because the basic options for sshexec are different to sftp, so you need to merge the raw options with the sshconfig to get the correct output set for sftp.

i.e.
```
sshconfig: {
  myhost: {
    host: 'myhost',
    port: 22,
    ignoreErrors: false
  }
},
sftp: {
  copy: {
    files: {
        "./" : 'dist/*json'
    },
    options: {
        srcBasePath: 'dist/',
        createDirectories: true
  }
},
sshexec: {
  uptime: {
    command: 'uptime'
  }
  rm: {
    command: 'rm somefile.txt',
    options: {
        ignoreErrors: true
    }
}

```