Add port conflict detection to the service validation logic.

Part of #974 
Validating this here is racy; it needs to be atomic with the etcd write, or you need to get a lock on an etcd key named according to the port.

I also don't like the precedent of pushing a cluster-wide constraint check into the validation stuff. Validation should (IMO) check formatting, syntax, etc--local constraints, not cluster-wide constraints.