Add's separate generation of a planned storm graph.

Outputs to a graphViz
Add the SummerStormBolt, IntermediateFlatMapBolt, and FinalFlatMapBolt
LUT -> LookupTable
Handle N-Way Merge
Move the new generation into a StormTopologyGenerator, add some initial testing code
Add tests for planner
Add more tests, ensure we have 3 layers in all graphs
Added flatMap generators

Add law saying no flat maps can live with a source
Remove whitespace changes to the StormPlatform.scala file
Fixes a topo in Topology
Adds extra handling in graph to ensure we don't push flat mapped producers down to the source
Rename forward/reverse to dependsOn and dependantOf for clarity
Remove the remove function, remove brackets from reverse
Make resolve mergableWithSource, a boolean returning function.

Add comments for maybeCollapse and maybeSplit
Fixes some bugs in handling of MergedProducers in the topology when those producers aren't normal merges.

Add in a block to disallow a source to be both sides of a merge(or indeed any other node).

Fix generator so this doesn't occur.

Clean up and encapsulate in a private class more of the separation logic
Don't hide the identity keyed producer in the viz graph
Updates to reflect comments from github
Enable WrittenProducer's in the generated tree, stop dumping all graphs in tests.
Fix bad comment
Merge pull request #236 from twitter/feature/add_storm_dot_graph

Feature/add storm dot graph