Use Guava AbstractExecutionThreadService to run Groningen as a service

Additionally, since it's running as a service now, we don't need to
call thread.join for each Pipeline.