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
```bt``` is ```@system```, ```@nogc``` is applicable, but perhaps it would be better to make a separate thorough review of the function qualifiers. There's other issues with qualifiers: https://github.com/D-Programming-Language/phobos/pull/2249/files#r13777548 )
```nothrow pure``` were needed because I uninlined ```opIndex``` use in ```toHash``` when I changed the index type on 32 bit.
Perhaps I should undo the uninlining in case it slows down ```toHash``` do to contract checking in debug builds? Then leave this qualifier change to a full qualifier review?