Split register and memory container type of state.

This commit splits the memory and register container types of
HaemuState, which allows for incremental updates using lens. It also
reduced the type arguments of HaemuState from 4 to 2.
Fix indentation of cabal file
Add tests for registers and runHaemuM