Added socket exceptions classes
Add multithreading server, global improvements

- Add mtServer: a derived class from BasicServer that uses threads to
  recursively send files to a client. TODO: Separate these things into
  header files and such.

- Socket: Add portable version of sendfile for cross-platform usage.
  Unfortunately this version is less-efficient than the zero-copy
  syscall sendfile, but sys/sendfile.h is not always available.
  TODO: Use sys sendfile if available, otherwise default to this.

- Socket: Change names of methods for easier usage.
  - Change connectToServer to connect
  - Change closeConnection to shutdown

- Socket: Rename Socket.h to socket.h (consistency!)

- SocketRuntimeException: Add ability to specify source of diagnostic string
  message from a custom source instead of only errno.

- Makefile: Improve Makefile dependency handling. Dependencies will be generated
  at each compile by the compiler.

- Makefile: Change Makefile to create build directory if neccessary

- General: Optimize includes across all files. Move all implementation related
  header includes to the source files.