Docker Links

Docker links allow users to easily connect one container to another.  


**Basic Usage**
```bash
REDIS=$(docker run -d crosbymichael/redis)
echo $REDIS
32da9f6caf76

docker ps
32da9f6caf76        crosbymichael/redis:latest   /redis/src/redis-ser   7 minutes ago       Up 7 minutes        6379/tcp

docker run -link "$REDIS":redis -t -i linktesting sh

BusyBox v1.19.3 (Ubuntu 1:1.19.3-7ubuntu1.1) built-in shell (ash)
Enter 'help' for a list of built-in commands.

/ #

echo $REDIS_PORT_6379_ADDR
tcp://172.17.0.2:6379
./redis-cli -h 172.17.0.2
redis 172.17.0.2:6379>
```

**View links for the container**
```bash
docker links $REDIS
ID                                     FROM                     TO                                 ALIAS
721aa034d10c:redis   32da9f6caf76        721aa034d10c                 redis
```

**Remove an active link and prohibit communication**
```bash
docker links -rm 721aa034d10c:redis
Link successfully removed: 721aa034d10c:redis
docker link $REDIS
ID                  FROM                TO                        ALIAS


# From the client
./redis-cli -h 172.17.0.2
redis 172.17.0.2:6379> set name docker
Error: Connection timed out
/ #
```

For a convenience you will be able to inspect the default port of a linked container using the shorthand:
```bash
echo $REDIS_PORT
```
If a container only exposes one port, that port will be used as the default or primary port.  

**Introspecting the linked container's environment**

Lets run another redis container with a password that the client must use.  We store the password in the environment of the container so we can use introspection to retrieve it in a linked container.
```bash
REDIS=$(docker run -d -e PASSWORD=dockerpass crosbymichael/redis --requirepass dockerpass)

docker run -t -i -link "$REDIS":redis linktesting sh

BusyBox v1.19.3 (Ubuntu 1:1.19.3-7ubuntu1.1) built-in shell (ash)
Enter 'help' for a list of built-in commands.

echo $REDIS_PORT_6379_ADDR
tcp://172.17.0.2:6379
./redis-cli -h 172.17.0.2 -a $REDIS_ENV_PASSWORD
redis 172.17.0.2:6379> set name docker
OK
redis 172.17.0.2:6379>

```

# Publish a container's port to the host
This PR also allows a user to pick what host IP/interface the docker ports are bound to.

**Publish redis to local host only**
```bash
docker run -d -p 127.0.0.1::6379 crosbymichael/redis
c370d0c2741d
docker ps
ID                  IMAGE                        COMMAND                CREATED             STATUS              PORTS
c370d0c2741d        crosbymichael/redis:latest   /redis/src/redis-ser   7 seconds ago       Up 6 seconds        127.0.0.1:49153->6379/tcp
```

The new `-p` syntax allows for greater flexibility when choosing how to publish ports to your host.  The changes are:

### Publish syntax:
* -p 6379 ( expose and publish port 6379 to all interfaces of the host with a dynamically allocated port )
* -p 6379:6379 ( expose and publish port 6379 to all interfaces of the host with 6379 as the allocated port )
* -p 127.0.0.1::6379 ( expose and publish port 6379 to 127.0.0.1 of the host with a dynamically allocated port )
* -p 127.0.0.1:6379:6379 ( expose and publish port 6379 to 127.0.0.1 of the host with 6379 as the allocated port )

There is still a few things to be done in this PR but I wanted to get it out in front of the community for feedback.

## TODO:
* Update documentation
* Link and publish unit tests
* -p == publish ( not port )
* Link to docker engine
* Sample client libs