Support for 'Multiple Readers, Single Writer' model in FMDatabaseQueue

As discussed in #147, I've decided to implement 'Multiple Readers, Single Writer' model to the FMDatabaseQueue.

I provide `Reader` methods which can run on multiple threads at the same time and `Writer` methods which will wait until existed blocks finish the execution and it will block the upcoming blocks while it's executing (using `GCD barrier` behavior)

**Existing methods will work as writer operation/transaction.**

PS. I am not native English speaker, feel free to review my documentation.