Initial commit
Adding FsTree class.

This class will be used as file system tree, it's implemented using
a MultiHash. When starting the program we must first try to load the
previous saved version that is on the disk.
Adding a FileInfo class.

This class is a description of each file that the client upload to the
idfs system.
Persisting FsTree.

When MasterNode goes up, we first try to read fs_tree.bin,
if does not exist, we create a new one with the root this.
We also save the FsTree every 5 mins if any changes have been
made
Adding File Message Body.

This is the language that the idfs speak with the slave node
and the client app
As FileInfo is a data class only, I will follow Google's C++
practicies and make it a struct.
Refactoring FsTree.
It makes no sense having the FsTree as a template,
The value of the hash is always going to be a FileInfo class.

One note:
This refactoring pointed that FileInfo class must implement
the operator==, because it will be used at QMultiHash<QString, FileInfo>::remove(path, fileInfo)
Adding master_node_clients classes
Fixing some linking problems and changing idfs_libs to static
Make MasterNode use MasterNodeClient class
Fixing build system
Remove the return and put the command block inside the else
Bug fix - wrong operator
Adding git ignore
Adding a simple client and start handling the LS and MKDIR commands
Removing unused method
Implementing touch command
Bug fix - Fixing mkdir, making it impossible to create dirs under
a normal file
Bug fix - Make ls works with paths like : /usr/home/
Adding command line arguments for port