Introduce BitString type class

This type class supports fixed-width integer types that can do bit
shifting, rotation, and other bit-twidding tricks. It extends
BooleanAlgebra and mimics much of the functionality you can find
in java.lang.Integer's static methods.

This class currently supports left and right shifting, and will
also support things like bit width, counting ones, etc.
Fix some bugs and add some tests.

This addresses the bugs pointed out on the pull request by Tom Switzer
and Alexander Altman. It also adds a basic test for some of the
functionality.

The test should be fleshed out more before the PR is merged, but I
just wanted to push what I had so far.
More BitString tests and another bug caught.

I had somehow inverted >> and >>> in the operator->name mapping.
This is exactly the kind of horrible bug that tests are supposed
to catch, so it's good that I ended up writing some!
Merge pull request #122 from non/topic/bitstring

Introduce BitString type class