Int16x8 and Int8x16 support

This patch adds initial int16x8 and int8x16 support. It doesn't yet include support for shuffles, conversions, and a few other things; I'll address those in future commits. And, there's more work to be done on tests, though all the new functions have at least some coverage.
Why not to use bitmask? `s0 & 0xF`?