Major Refactoring

* Adds several tests
* Adds buffering for variant streams
* Major refactors and code cleanups
* Adds javadoc
This class has some other variables than those present in command line. The copying is only done once at the constructor of DenovoRunner and after that DenovoShared is an immutable object. But, I agree passing commandline around would have been shorter.