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.

Why is this a case class? Seems like a trait is better choice. I don't think we will be doing case matching on these.