Fixes #89 #57

TaskDescription now takes a TaskJar parameter which is a jar file converted to a byte[]. TaskDescription.taskClass is now a string which is converted to a class using the ClassLoader.

Message is now Message[T<:java.io.Serializable]. Message should be made a monoid - this will likely be done in the future for #28