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
paying for this extra branch every iteration seems unfortunate. If llvm isn't smart enough to inline it out when f always returns false, this could prevent vectorization.