Finished constructing the Alt Builder

The Alt Builder is meant to make use of the Builder Pattern and is
immutable for thread safety. Using it for construction takes
time quadratic in the number of branches, which is only necessary
due to a check for illegal behaviour. I guess we could include a flag
to remove this when the efficiency is extremely important, and the programmer
is being careful.