Fix docker-links-style env vars for services

This includes 3 changes:

1) Use the Service.Protocol field, rather than hardcoding TCP.
2) Use Service.Port rather than ContainerPort - ContainerPort can be a string
   and has absolutely no meaning to consumers.
3) Beef up tests for these env vars.
Merge pull request #1431 from thockin/svcenv

Fix docker-links-style env vars for services