std.bitmanip BitArray refactor

I reviewed BitArray and found a few issues:
- constness
- incorrect treatment of "pad" bits
- many places where size_t should have been used.

Incidental fixes:
- https://issues.dlang.org/show_bug.cgi?id=11015
Modifying the iteration index would have created a bug. I didn't see any use for it so I removed it.
In order to support modifying it we have to save a copy of it so that we can write back the result to the right place.