Tormenta refactor

I attempted to clarify what we do in tormenta in classes better:

We have three core items

SpoutProvider ultimately to provide a getSpout function, has both a getSpout and getSpout(schemeTransformer)

SchemeTransformer, really just a wrapper on a T => TraversableOnce[U]. But the abstraction makes it easier to use in things like the Twitter spout that come with a type other than Array[Byte], and the TraversableSpout.

The Scheme, I didn't touch this, but this is the raw decoding Array[Byte] => T decoding abstraction of Tormenta. It fits nicely into the provided storm spouts.

This is called at the end similar to toPipe from typed pipe to just hand off to storm. So getSpout has no contract on the output of the types. A spout provider has the output type of T, but there isn't any way I know of to enforce this contract on the inner storm implementation?