Clarify slice failure conditions.

The current docs for `slice_from` say that it *fails when `start` points outside the bounds of self.* This is slightly misleading as slicing from the length of the vector, which corresponds to an index outside the bounds, still works and yields an empty slice.

I've made conditions like this more explicit in the slicing documentation, because it was ambiguous enough that I found myself writing a test file before using these methods. Then again, maybe I'm just paranoid.
`foo = [1, 2, 3]; foo.slice(1000, 1000)` fails even though there is no last element.

Also, these should say `slice` instead of `vector`.