Bit sets

This patch adds a new type for storing arrays of bits.  Each bit in the array can be on or off.  We always allocate space for all of the bits in the array, regardless of whether they are on or off.