Move Command boilerplate into SparkCommand

There are a few things happening here:
* `Command` is now parameterized by an "Arguments" class
    * `Command.run` takes an instance of that Arguments class rather than raw `String` args
* All of our callers are now `SparkCommand`s
    * They take a `SparkContext`
        * Important: you don't have to manage `SparkContext` lifecycle!
        * History server fix (`sc.stop()`) is [included](https://github.com/ryan-williams/guacamole/commit/6110f8ee7ffcc6bd0043391ca5313a237a7b63c7).
* The [first commit](https://github.com/ryan-williams/guacamole/commit/44fc3d4a4c66bc6d6e8c0bf670d7cb70ab378a71) basically changes whitespace in all the callers and made for messy diffs, so you might prefer to look at each commit separately.
I'd suggest removing the "caller" language in this comment and in the object names (e.g. instead of ```GermlineStandard.Caller``` use something like ```GermlineStandard.Command```. Even though all we have are variant callers now, I think it'd be good to keep it clear that we're not making assumptions here on what a command does.