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.
At least for this case, this code compiles fine for me:

```rust
fn foo<'a, T>() -> slice::Items<'a, T> {
    (&[]).iter()                        
}                                       
```