[block-cache] fix leaking validators

The memory for the blocks is explicitly managed, and the destructors
for the blocks wasn't being called.
[block-cache] Create just one noop_validator

No need to create a separate one for each block.
[block-cache] When changing validators the new validator check fn was only being called if the block was dirty.
[block-cache] tweak when validators are swapped

Makes it more consitent in the face of exceptions
[block-manager] Superblocks weren't being marked as DIRTY

Gulp