Add caching pipelining for single documents (fixes #9)

Pipelines are created by transforming a list-of-dicts specification into celery
tasks, which are then chained. Optionally, store_single tasks are placed at the
end of the chain or after each task.

Before creating the chain it checks how much of the result is already stored,
and starts processing from the stored result 'furthest' in the pipeline.

Issues:
- 'taskname' is now a concatenation of the celery task names of the chained tasks
  This is (a) not very nice and (b) is a technical detail that belongs in es, not
  in pipeline
- I dislike the 'blocking' parameter, I feel that the pipeline function should
  always return an AsyncResult. However, if the whole result is in cache, there
  is no celery task to run (so no AsyncResult) to return. So, with blocking=False
  the return type depends on the state (nasty). The only solution I see is to
  'mock' an asyncresult, but that is not much nicer.
  (on second thought, if pipeline is used as a task, it doesn't matter so much,
  as pipeline.delay().collect() will always return the actual result)