Rewrote character inference to use something more like Fitch's algorithm. Added `Character.intersect()`.