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.

The twitter spout is a bit special since it doesn't use a scheme. I didn't want to be overriding all the methods for metrics or flatmap functions if i could. I've added that Spout trait so its more obviously typed, and pass in the SchemeTransformer to it. (Much we would in a normal spout)