core: added future proc mutex lock
core: added future proc mutex lock

Added a future lock which prevents the anything being added or removed
from or to the set when looping over the set of blocks. This fixes a nil
pointer in the range loop when trying to retrieve a block from the set
which was previously available but removed due to regular chain
processing.

Fixes #2305

maran/go-ethereum,maran/go-ethereum,maran/go-ethereum,maran/go-ethereum,maran/go-ethereum,maran/go-ethereum,maran/go-ethereum,maran/go-ethereum,maran/go-ethereum