prototype internal iterators on blist

```
test blist::bench::bench_iter                 ... bench:      1050 ns/iter (+/- 140)
test blist::bench::bench_trav                 ... bench:       240 ns/iter (+/- 18)
```

GG internal iterators

CC @reem @cgaebel @aturon
Being able to break with e.g. `take` is pretty useful, though.