Bug/separate deferreds threads

This branch addresses a couple of fixes for the situation we are having where the reactor thread gets flooded with operations that effectively block the urgent operations.

It mainly defers  to threads some costly operations, having care of calling the callbacks back in the reactor thread.
It also restructures some things in the internal storage:

* It separates new from dirty queues, to be able dispatch create writes before puts.
* Rewrite of the fdoc storage using nested defaultdicts.
* Use of [mbox][uid] indexing for more efficient storage.
* Use of more fine-grained locks, to get rid of the global soledad lock. This will need further work to limit size of the dictionary.