Don't block the calling thread.

The FMDatabaseQueue called dispatch_sync over a queue to ensure they won't be concurrent.

The problem is that dispatch_sync also blocks the calling thread...
Also, dispatch_sync doesn't stop other threads to run on the same queue, it was the queue that implicitly when created, was serial, therefore making sure FMDatabase wasn't used twice. 

My Changes:
- Explicitly create the _queue as DISPATCH_QUEUE_SERIAL.
- replace dispatch_sync by dispatch_async.