Implemented a proxy

The proxy server acts as a tunnel for clients connecting which are both
behind NATs and cannot directly connect to each other.