Fixing VM up to block no 26074 - update version to 0.5.4

- Created Program.allocateMemory() unit tests
- Clean up code for memory allocation
- Added documentation for several existing methods.
- Split up and simplify some methods for memorySave, memoryChunk & memoryLoad
- Use BigDecimal.intExact() and longExact() to catch overflow issues.
- Updated to version 0.5.4

This fixed the original bug at block no 12371 more elegantly to avoid further issues at no 12391, 12393 (tx1) and 12393 (tx2) and gets the blockchain all the way up to ```block no 26074```. Here the dumptrace of memory, stack and storage is exactly the same as cpp and further state dumps from other clients seem to be unavailable..

After this is merged, I will label this point as POC5 and will continue to work on a new branch for POC6