TaskExecution abstraction API for master impl.

API provides ExecutionPhases to be executed independently with proper
phase transition and centralized and specified message handling. The
TaskExecution also makes sure that all key methods are executed on the
same thread.
Creating MapReduceTaskExecution stub

Since the Task doens't provide a getInputPath method anymore, the map
reduce task execution will receive the input path on its construtor and
forward it to the constructor of one of the execution phases (the mapping
one)
Starting implementation of MasterApplication

Removed MasterNode class and created the MasterApplication which will
create the server nodes and conduct the task loading phase before actually
starting a task execution.
Creating Setup execution phase on Master

Setup phase is the one where we send slaves the task descriptor and JAR
file for them to set things up.
Creating Mapping execution phase on master

On the mapping phase we read the input and send it to slaves for mapping
to be done on the slave machines.
Removing core subpackage from master
Improving TaskExecution class implementation

Fixing some method visibility issues and state transition bugs (we weren't
calling exit state when failing or succeeding task execution). Also adding
option to abort current execution, which fails with a
CancellationException.
Creating disjoint subsets utility class

Method should return a certain number of sets, containing exactly all the
elements from the original collection and without any repetitions between
them (should be disjoint). Already created unit tests to assure proper
functioning of function.
Creating reducing execution phase on master

Reducing phase first divides mapped keys into peers, sends them the
addresses of other connected slaves and then waits for them to send the
final result datum pairs, which will be written to a file to be returned
as the task execution result.
Implementing task execution callbacks on MasterApp

Sending messages to client on each phase entering and success/failure
messages on task execution result callbacks.
Creating PeerConnectionListener on NodeServer

Listener possibilitates getting notified when a peer has connected or
disconnected from the server.
Adding verbose mode to the MasterApplication

On verbose mode we will print extra information like when an unhandled
message has been received and execution phases of the current task, as
well as reasons for failure, etc. directly on the console. Also adding a
printed notification as well when a slave or client connects or
disconnects to the server (that is done everytime though, not only on
verbose mode).
Creating console interface main method to Master

Allows server state tracking and shutting down as desired.