Separate meta (TCP) and data (UDP) sockets.

This patch changes the socket array from an array of (tcp,udp) pairs to
two arrays. This provides more flexibility as we can now manipulate
TCP and UDP sockets independently of each other.
Add separate configuration options for configuring data (UDP) sockets.

This patch adds two additional configuration options:
 - DataPort: configures the port used for the data (UDP) socket.
   Defaults to Port if not specified.
 - DataBindToAddress: specifies the address the data (UDP) socket should
   be bound to. Defaults to BindToAddress if not specified.