coreopt: Move check for NOP to walker
Refactor constant folding into own class
Disable currently ineffective operation folding
Merge branch 'refs/heads/coreopt_refactoring' into coreopt
coreopt: Don't wrongly show differing fold results
coreopt: Remove pointless stack implementation for deep_go
coreopt: Improve verbose output
coreopt: Create all flows before optimizing them

This will allow modifying/removing instructions from flows other than the one we are currently walking on.
coreopt: Store flows in Hash, indexed by start address

This should allow finding flows later by looking at incoming/outgoing
edges of blocks.
coreopt: Do constant propagation between flows. WIP

Propagates too much right now, see comment in walker.rb:86
coreopt: Fix too much optimization across flows

Don't propagate to a flow that is being executed multiple times
and writes a variable - on second execution, the value is
probably different than the now propagated constant.
coreopt: Optimise between more than two flows - WIP

Ends up in infinite recursion since it doesn't check whether a flow
 has already been processed.
Fix infinite recursion in inter-flow optimisation
Merge branch 'refs/heads/inter_flow_optimisation' into coreopt