Change the structure of the code, and start the tracker code.

The project structure has been greatly changed. The source files containing main for each program are now at the top level directory of this project. In each subdirectory, the makefile creates a .a file. The top-level makefile calls the appropriate makefiles, depending on the program being built, and links them with the object file from the appropriate main source file.

The tracker has been started. it uses the NetworkController for handling connections. Because of this, the NetworkController has been more generalized, so that it can run any socket handler function that is passed to it (via its constructor).