complainIfUndefined: reinstate the 3rd argument (guard) so as to make
the definedness check and possible shadow temp set-to-defined be
optional.  Use this to properly instrument IRLoadG and IRStoreG, so
that if the load/store does not happen, not only is the validity of
the address not checked, neither is the definedness.

This fixes a regression introduced by the COMEM branch on ARM, in
which conditional loads/stores with addresses which are undefined at
runtime and with guards which are false, would generate false errors.

Also extensively re-checked the check-generation machinery and updated
a bunch of comments.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13386 a5019735-40e9-0310-863c-91ae7b9d1cf9