[neo-project/neo] Use R/W Locking for mempool, cache, and block headers for greater concurrency. (#355)

Readers should not block other readers for locking data structures like the mempool and block headers. This addresses the issue by using Read/Write locks.
You can view, comment on, or merge this pull request online at:

https://github.com/neo-project/neo/pull/355

— Commit Summary —

* Use R/W Locking for mempool, cache, and block headers for greater concurrency.

— File Changes —

M neo/IO/Caching/Cache.cs (69)
M neo/Implementations/Blockchains/LevelDB/LevelDBBlockchain.cs (67)
M neo/Network/LocalNode.cs (47)

— Patch Links —

https://github.com/neo-project/neo/pull/355.patch
https://github.com/neo-project/neo/pull/355.diff