Pre-calculation of gas cost before execution of operation

**THIS FIXES CONSENSUS FOR BLOCK No. 1984 and No. 2112**

CALLDATACOPY caused an OutOfMemoryException in block no 1984 because somebody tried to create a memory slot with an address space, the size of an Ethereum account address. This is theoretically possible in the protocol, but because of the block.gasLimit and probably also tx.gasLimit this isn't valid and shouldn't cause an issue this early on.

This code, calculates the gas necessary for an operation before actually executing it, thus throwing an OutOfGasException way before it can cause any problems for the actual node it is running on.

CALLDATALOAD caused an overflow before comparing this to the message data length. The offset was also much larger than the maximum array size. This is theoretically allowed, but currently not technically possible in ethereumj. There is no Unit test for this, as this is a workaround for this limitation until a better implementation is made.