Improved optimizer

Now the optimizer takes care of assignments inside expression, like:
y = (x = 10);
or
foo(x=0xCAFEBABE);