Add a TailProducer class that is anything we can validly end a graph on.

Add a user supplied function for us to ensure we don't produce too many nodes(online regression).

Adds Left join to our generated graphs
Merge issue
Speed ++ the tests
Merge pull request #286 from twitter/feature/add_join_to_generated_graphs

Feature/add join to generated graphs