Fix the side effects of clinit check

HClinitCheck obviously does reads so it's side effects should include
all reads and writes, just like HInvoke. GVN now explicitly allows
clinit check to be reused, which would otherwise be disallowed based on
the dependency introduced by the new side effects. Also make licm's
logic cleaner and treat clinit check as a special case also,
otherwise licm can't hoist clinit check due to the dependency
introduced by the new side effects also.

Test: run-test on host.
Change-Id: I16886cfe557803d84d84ce68fbb185ebfc0b84dc
4 files changed