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.
Not much point in abbreviating `IntType` to `IntTy`, just makes for less readable code ...