Fixing Guava library javadoc link
Improve network API for concurrency&serialization

Fixed some method names and compatibility by not returning private classes
on public methods (even by generics :P). Also fixed serialization issues
by providing a way to set the class loader to be used on deserialization.
Setting InputReader interface method signature
Updating messages codes
Modifying network API method names

Messages have a code instead of type, and the MessageRouter now has more
explicit and clear method names (as well as an "unregisterHandler" method
now as well).
Adding some necessary methods to Task class

A method for returning the JAR class loader, so that we can set it on the
NodeClient and NodeServer which will need deserialization. Also added
methods for returning the JAR file path and input path, since we will need
it to send the JAR to slave machines and to read the input using the input
reader respectively.

Also modified static factory method name to "load" from "configure", as
well as some exception checking in it so we return null when we can't
instantiate an instance instead of throwing exceptions.