Proxy feature

Initial implementation of gradle-ssh-plugin enhancement #88 to allow connections to be made through a proxy. Almost all proposed changes are additive and do not refactor existing code. Please let me know of design or implementation issues/improvements that are needed. 

#### New Features
* proxy definitions created using top-level script block
* global connection proxying
* remote-specific connection proxying which overrides global proxy if set
* tasks can use both proxied and non-proxied remotes in a single session closure

#### Caveats
* I am new to Groovy/Gradle/Spock and code may not be sufficiently Groovy-ish/Spock-ish/Gradle-ish
* Proxy implementation may need better test coverage (need some guidance on project testing approach)
* No additional server Integration or acceptance test coverage (need some guidance on project testing approach)

#### Build Status
* Travis CI build passing
* All tests run by test task are passing
* All tests run by serverIntegrationTest task are passing except for FileTransferSpec on Windows and HostKeyCheckingSpec on OSX. Both failures are documented as known issues already.
* I have not written any documentation beyond GroovyDoc. I will do that next if you think this initial request makes sense