Add BList

Still need to impl a few methods, but this is a good starting point.
These are public types exposing the private `AbsItems`, it's better if they're public all the way down, i.e. make these 

```rust
pub struct Items<'a, T> {
   inner: AbsItems<...>
}
```

Adds a bit of annoying boilerplate, but it makes the docs (e.g. shows all trait impls) and compiler error messages better.