Add a partition iterator

This is essentially the partition function from clojure, which I found myself wanting. It does this sort of thing:

```julia
for u in partition('a':'z', 3)
    println(u)
end
```

```julia
('a','b','c')
('d','e','f')
('g','h','i')
...
```

Not to be confused with the partition function in haskell, which is entirely different.