Higher level bitset wrapper

(Hopefully) not a functionality change.

This is a higher level, more concise wrapper for bitsets which supports efficiently counting and iterating over set bits.  It's similar to std::bitset, but the latter does not support efficient iteration (and at least in libc++, the count algorithm is subpar, not that it really matters).  Could make external count and iteration algorithms, but that accounts for more than half of the 119 line file, so there's no harm in just having a custom class.

edit: oh, and std::bitset doesn't support initializer lists, either.

It makes code that uses bitsets nicer to read and, due to count and iteration mechanisms, probably ever so slightly more performant.

This can be used in a few other places too.
Ah, okay. What about `static_assert(std::is_signed<IntTy>::value, "BitSet should not be used with signed types");`, then?