[jit] Add new optimization flag for alias analysis.
[jit]Replace all usages of MONO_INST_INDIRECT to force regalloc with MONO_INST_VOLATILE.

The indirect flag should only be used to signal that the address of the given variable
has been taken. This means that it should be possible to recompute that flag from the IR.

The usage of the volatile flag remains not ideal as it conflates two separate issues
and will in the future hinder efforts to implement address based alias analysis.
[jit] Introduce has_indirection flag in MonoCompile to signal that LDADDR was generated.

To reduce the cost of alias analysis we detect which methods can potentially profit from
the optimization.

The current detection logic is very simple, every time LDADDR is generated, we set
has_indirection to TRUE.
[jit] Add counters for alias analysis.
[jit]Add an alias analysis pass to the JIT.

The alias analysis pass is capable of simplifying indirection against
local or temporary variables. It will replace a memory load or store
with direct access to the variable.

It does a local pass looking for addresses and replacing memory
ops with direct ops.

If any conversion happens, it does a DCE pass to try to kill those
LDADDR and then recalculate the indirect flag.

Finally, if the number of indirect variables is reduced, it does a
global to local vreg pass and another DCE pass to kill most spurious
copying.

Performance numbers on 32bits OSX:

Code size:
mcs: -11.366 (0.6%)
corlib: -15.397 (0.6%)

Execution time increased by less than 0.2% which is about the same
value of the test variance.

Numbers are not impressive since we don't perform store forwarding
or constant load elimination. Proper handling of value type aggregates
and longs would move us much further.