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 bit and with mask? `s0 & 0xFF`?