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
Earlier on in this PR, I re-wrote BitArray to use ulong indexes on 32 bit systems to enable BitArrays bigger than 2^29 bytes. That change was removed but I did not remove any changes that simplified that process.