Added client.py
Moved RichUnixDomainSocket class to a separate file
Wrote the main waiting loop in the client program
Added server.py
Moved a few common functions into common.py
Tested communication between server and client successfully
Right up to the point where I need requests
Added a requirements.txt file generated from `pip freeze`
Added in the requests magic. Now the server actually fetches the
file. It only handles synchronous requests now.
Added basic functionality of a `worker`
Added message types
Added a "DIE" message type which requests thread to die
Added a "log" function to facilitate complex logging in the future
Added `ProfileManager`. Untested.
Added Job Manager. Untested.
Fixed 'datetime' serialization issue
Removed MessageType.PROFILE_SUMMARY_REQUEST message type as it
forces the job manager to be synchronous.
Fixed a couple of small things as well
Modified server to start the job manager and profile manager on startup.
The requests aren't routed through them yet.
Fixes after first run
Known Issues:
  - Profile Manager shouldn't be a separate component, it should
    be a part of the job manager itself
Merged Profile Manager functionality into Job Manager
 - Fixed some simple mistakes in Job Manager and Worker
 - Requests are successfully fetched now by the worker

Known Issues:
 - Response is not mailed to the client
 - Signal messages aren't properly mailed to the worker
 - Fixed the waiting loop in the server/postman
 - It now checks for any messages every 0.001 seconds and mails them

Known Issues:
 - The server doesn't die except on a signal
 - The main thread doesn't join all the threads before exiting
 - The daemon is not started by the client
A more graceful exit on signal, by spreading a DIE message
Fixed a few corner cases for graceful exit
 - The server now acknowledges a request with a 'request_ack' message
 - If the client doesn't receive request_ack in 10 sec, it aborts
 - Added status updates
 - Status updates can be seen in client using -u/--updates switch
 - Fixed a case of unhandled requests in the worker

Known issues:
 - Make client display status in one line instead of 'printing'
   on multiple lines
 - Handle the case when filesize is not available through a
   http HEAD request
Handle case when 'content-length' is not available in the headers
of the initial HEAD request