Add Optimization for using asm offsets instead of shifts
Add terminal loop optimization

Loops without IO and nested loops can be reduced to a single pass of
multiply and add instructions. At runtime, the loop figures out how many times
it will run, and then multiplies all its adds and subs by that amount.
Tweak compilation