Support servers with same host but different ports

Allow configuration of multiple servers that share a hostname but have different ports, as described in issue #784.

WARNING: If a mixture of the `role` and `server` styles of specifying servers are used for the same server, and the ports are specified inconsistently between the different parts of the definition for the same server, then this change will break that configuration. I don't know if that's a valid use case or not.

All the rspec tests pass but for some reason cucumber just hangs. If you can point me to why that might be I'll look at checking those too. Have also tested using this branch to actually deploy an app to two servers with identical hostnames and it worked fine.