AArch64 & ARM: refactor crypto intrinsics to take scalars

Some of the SHA instructions take a scalar i32 as one argument (largely because
they work on 160-bit hash fragments). This wasn't reflected in the IR
previously, with ARM and AArch64 choosing different types (<4 x i32> and <1 x
i32> respectively) which was ugly.

This makes all the affected intrinsics take a uniform "i32", allowing them to
become non-polymorphic at the same time.
AArch64: use new non-polymorphic crypto intrinsics

The LLVM backend now has invariant types on the various crypto-intrinsics,
because in all cases there's only really one interpretation.
ARM: implement support for crypto intrinsics in arm_neon.h