Efficient bit sets.
A bitset is an array of boolean values that can be accessed with indexes like an array but provides a better memory usage (divided by 8) for a very small speed trade-off.
When a negative bit value is used for one of the BitSet functions, this exception is raised with the name of the function.
Create an empty bitset of size 0, the bitset will automatically expand when needed.
is_set s n returns true if nth-bit in the bitset
s is set,
or false otherwise.