Revamp `Bitv` and `BitvSet`

The types `Bitv` and `BitvSet` are badly out of date. This PR:
- cleans up the code (primarily, simplifies `Bitv` and implements `BitvSet` in terms of `Bitv`)
- implements several new traits for `Bitv`
- adds new functionality to `Bitv` and `BitvSet`
- replaces internal iterators with external ones
- updates documentation
- minor bug fixes

This is a significantly souped-up version of PR #15139 and is the result of the discussion there.

Is this closure form actually needed? It seems a `fn mut_iter<'a>(&'a mut self) -> slice::MutItems<'a, uint>` would serve the same purpose and be more efficient (used like `for w in self.mut_iter() { *w = !0u }` etc.)