safety: ensure that we dereference an aligned pointer
safety: ensure that we dereference an aligned pointer

Previously, we were copying data to a `[u8; 8]` and then dereferencing a
pointer to `[u8; 8]` as if it were a `u64`. However, this is actually
undefined behavior since `[u8; 8]` has a smaller alignment than `u64`.

To fix this, we start with a `u64` such that we are guaranteed correct
alignment.

Closes #157

BurntSushi/byteorder