Add Sidekiq and Kafka. 

Also:
+ KafkaEvent to publish arbitrary info about models, still kind of a work in progress
+ ClassificationLifecycle management moved to a sidekiq worker
+ MultiKafkaProducer Module to abstract between jruby-kafka and poseidon. 

When running jruby you'll also need to use jbundler to manage Kafka libraries. 
Not sure if this comment made it through my first PR review.

I think this queue action should be extracted to the calling controller as the classificatons worker reconstructs this lifecycle object , e.g. in the classifications_controller the lifecycle method could become
``` ruby
def queue(classification, action)
  ClassificationLifecycle.new(classification, cellect_host).update_cellect
  ClassificationWorker.perform_async(classification.id, action)
end
```
OR cellect can be updated in the worker but i think we want this to be updated asap and not eventually (depending on load in sidekiq, etc) as users might see the same subject if it's not.