Summingbird Storm/Online refactor

based ontop of #539, so when we merge that I can rebase/merge to make the diff a little cleaner. This is much bigger though so didn't want to get stuck with merge conflicts.

This however does not effect behavior of jobs(though it is source code incompatible at this time) at all. Its mostly moving things out of storm into online where possible. 

Attempts to put some nicer types around our Store Provider and Service Provider needs in online is probably the most useful cleanup to it. Adds a bunch of comments too where needed. 
prefer local means that if there is another bolt working in the same JVM (and thus, host), send to a random one of those, avoiding serialization and the network.

The downside is that if your spouts have few partitions, this limits parallelism until you do the key grouping.