This patch adds asan support for AArch64 ILP32 abi. ILP32  is a new abi
for AArch64 similar to x32 where AArch64 instruction set are coupled with a
data model where int, long and pointer are 32-bit.
Unfortunately current support is not upstream for all projects. Binutils
and GCC are already covered, but GLIBC  and Linux  are maintained in
out of tree branches.
Also current LLVM also does not have support for ILP32, so current idea
of this patch is to eventually sync with gcc libsanitizer. In fact runtime
testing were done on gcc.
Main changes for compiler-rt is support the kernel ABI for internal
syscalls. Different than x32, ILP32 tries to leverage 32-bits syscalls
so kernel ABI for 64 bit argument passing (for ftruncate for instance)
are passed using the new Linux generic way for 32 bits (by splitting
high and low in two registers).
So instead of adding more adhoc defines to ILP32 I extende the
SANITIZER_USES_CANONICAL_LINUX_SYSCALLS to represent both 64 bits
argument syscalls (value of 1) and 32 bits (value of 2).
It also fixes an AArch64 issue with upcoming GLIBC 2.27 (the one which
also ILP32 is currently based) with mcontext_t definition (GLIBC now does
not based it on kernel sigcontext_t anymore, but rather redefines it with
slight different members name).
I did a sanity check against AArch64 ILP64 and x86_64 on Linux without