Use Guava AbstractExecutionThreadService to run Groningen as a service

Additionally, since it's running as a service now, you don't need to
call thread.join for each Pipeline.
Merge pull request #14 from Sanrag/master

Make behavior of getStatesForPipelineId more consistent
Cleanup generator retry logic from PipelineIteration, move it to Generator itself.

Using super.run() allows us to do profiled runs for generator retries.
Merge pull request #15 from Sanrag/daemons

Use Guava AbstractExecutionThreadService to run Groningen as a service
Merge pull request #16 from Sanrag/move_generator_back

Cleanup generator retry logic from PipelineIteration