Enhance record and recarray support

- Fix #712 alignment issues on GPU
- Handle dispatching of recarray type

The only CPU target we currently support is x86/x86_64, where unaligned loads are supported.  I think the next CPU architecture we will support is ARM, and starting with the ARM11 processors (the Raspberry Pi uses ARM11), unaligned loads are also supported.  AArch64 (64-bit ARM) also seems to support unaligned memory access, unless you are trying to perform atomic updates on a memory location.

That said, there's lots of fun arguments on StackOverflow about whether there is a performance cost for unaligned loads, whether or not the C standard lets you have unaligned struct members, etc.  I can imagine eventually wanting Numba to warn unaligned dtypes for all targets.