CCoinsViewMemPool cleanup

Move the mempool lock into CCoinsViewMemPool, since the existing code
always manually locks the mempool (with the lock having same lifetime
as the view!).

Move a call to CMempool::pruneSpent into CCoinsViewMemPool::GetCoins,
since CCoinsViewMemPool::GetCoins is called only once in the codebase,
followed by a call to pruneSpent with a `TODO` suggesting it be moved.
By initializing this last gcc complains about initialization out of order (yes, that is an actual warning...), I'd prefer we not add new warning messages.