Rearrange the construction order to avoid needing some hacky null-checks
Add XOR gate and tests, and rename some tests.
Added half adder and full adder.  Added a way to count instances of various types, so it's possible to see how many relays make up a full adder, etc.