Docker best practices

This is pretty much a total rewrite, but is something that the GoCD team could actually put into the pipeline and publish to DockerHub so that people really do just type "docker run gocd/agent" and have a magical agent.