specify public port
add tests
Fix a typo in runtime_test.go: Availalble -> Available
Add support for the UDP protocol in parseNat()

The notation is extended to support "/udp" or "/tcp" at the end
specifier string:

- 22/tcp
- 25826/udp

The protocol defaults to tcp if "/tcp" or "/udp" is missing.
Add support for UDP in network.go

Significant changes:

- A second PortAllocator is instantiated for the UDP range;
- PortMapper.Map() has been split in MapTCP() and MapUDP() (I tried to
  keep that in one method by using the net.Addr interface but it doesn't
  have a Port field which make this approach barely interesting);
- PortMapper maintains separate mapping for TCP and UDP;
- The extPorts array in NetworkInterface is now an array of Nat objects
  (so we can know on which protocol a given port was mapped when
  NetworkInterface.Release() is called).
Add support for UDP in container.go

`docker ps` now shows UDP ports as "frontend->backend/udp". Nothing
changes for TCP ports.

`docker inspect` now displays two sub-dictionaries: "Tcp" and "Udp",
under "PortMapping" in "NetworkSettings".

Theses changes stand true for the values returned by the HTTP API too.

This changeset will definitely break tools built upon it the API (or
upon `docker inspect`). A less intrusive way to add UDP ports in `docker
inspect` would be to simply add "/udp" for UDP ports but it will still
break existing applications which tries to convert the whole field to an
integer. I believe that having two TCP/UDP sub-dictionaries is better
because it makes the whole thing more clear and more easy to parse right
away (i.e: you don't have to check the format of the string, split it
and convert the right part to an integer)