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.

Mostly to keep the base trait small is why, the flatmap ones being lifted out seemed like a nice separation, so these ones are too. Will add comment as to how multiple ones behave.