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.
Haha, interesting. I was trying to stay away from just blatantly stating the inequalities, but it seems like that might be the best approach.

Regarding vector, I agree that it's a bit weird, but it seems like a reasonable way to distinguish between the thing you're slicing and the slice you're creating. Do you think writing "original slice" and "new slice" would work instead?