core, trie: cache the code chunking in contract
Since ChunkifyCode and touchEachChunksOnReadAndChargeGas are dominating the execution time, this PR attempts to cache the values as much as possible, in order to reduce the amount of time these functions are called.
Before: ChunkifyCode dominates execution time

Current state: execution sped up by; a factor 2, and touchEachChunksOnReadAndChargeGas now dominates

Both functions were called too often, because chunking is performed in PUSHn instructions, which are among the most common instructions found in a standard EVM bytecode.

Confirmed improvement
This is still useful when calling CODECOPY, but contract execution is no longer a problem and EXTCODECOPY won't work. I think a better approach is to create a global code cache. I'm creating an issue for that.