Fixes #1 - Threaded TCP connections
* Implemented threaded socket connections for clients
  This is useful as if a one or more client connections get screwed up
  then just that connection will get deleted, as soon as a new request
  from the same client comes in a new thread with a different socket
  descriptor will be initialised.

  This is a standard way to handle multiple connections in a
  multithreaded environment.