core: add functions for creating empty slice iterators.

This is useful when building iterators over data structures containing
`Vec`s (or `[]`s) since one can store `slice::Items`s in the iterator,
initialising it to `Items::empty()` and thus avoiding the need for
duplicated code between the initialiser and the `next` method, and
avoiding duplicated checks from storing `Option<slice::Items<...>>`
instead.
Can you provide an intuition as to why `slice`'s `PTR_MARKER` is private and `#[inline(never)]`, but `Vec`'s is public and `#[doc(hidden)]`? Should one of them just be using the other's? Or maybe this pattern should be generalized somehow to avoid filling up our binaries with a bunch of junk statics to have nonsense ptrs to?