Make handle typesafe.

The biggest win here is having IndexSlice take buffers of a specific type,
making it impossible (at the type level) to use the wrong size type in the
buffers. Unfortunately, this adds extra IndexSlice variants, one for each
size, as otherwise there is no good way to restrict which types can be used as
the slice, and would introduce an unnecessary type parameter to the
VertexSlice.