[dm-thin] irqsave must always be used with the pool->lock spinlock

Introduced in recent patch.
[dm-thin] Fix rcu_read_lock being held in code that can sleep

Introduced in Mike's recent per thin deferred list patch (I don't
think this is upstream yet).

We can't process deferred bios with the rcu lock held, since cell
allocation may block.

- Introduce a refcount and completion field to each thin_c

- thin_get/put methods for adjusting the refcount.  If the refcount
  hits zero then the completion is triggered.

- Initialise refcount to 1 when creating thin_c

- When iterating the active_thins list we thin_get() whilst the rcu
  lock is held.

- After the rcu lock is dropped we process the deferred bios for that
  thin.

- When destroying a thin_c we thin_put() and then wait for the
  completion.  To avoid a race between the worker thread iterating
  from that thin_c and destroying the thin_c.