SshFeed: add execAsCommand() option

Adds execAsCommand() and execAsScript() (default) to determine which SshTool method is used to run the command. Required for Windows compatibility, as the execScript function is incompatible with Windows.
Expose override of SSH host and port; use w/ knife

SshMachineLocation allows the hostname and port number for SSH access to be overridden, while still having the main MachineLocation address unchanged. This is useful for cases where the "address" is a private IP that is not reachable by the Brooklyn management console, but a firewall/port-forwarding configuration allows it to be SSH-accessible on an alternative hostname and port number. Adds a public method that retrieves the SSH host and port.

Alters the "knife converge" task to extract this alternative host-and-port and use it in the bootstrap operation (as knife delegates to ssh to do the actual work).
Reinstate use of knifeWhichPort() method

https://github.com/brooklyncentral/brooklyn/pull/961#discussion-diff-6882445 noted that not using knifeWhichPort() meant that a few explicit configuration options were now ignored. Change implementation to continue to use this method, but taking the HostAndPort instance instead of SshMachineLocation.
Merge pull request #961 from richardcloudsoft/odds-and-ends

Misc fixes for Windows and private-network clouds
Adds EmptySoftwareProcess to software/base
Add NginxIntegrationTest.testRestart
Adds AbstractNonProvisionedController (for cloud load balancers)

- does not create a VM, unlike AbstractController
- also updates things to use LoadBalancer, rather than AbstractController