On second thought, get rid of nested Xor factors

Because we all know flat is better than nested :)
Pass cnf to all factor calls
Change cnf=False/True argument to conj=False/True

The problem is that we are not selecting a 'normal' form; we are only
selecting AND forms over OR forms. Someone once said something like
cache coherency and naming variables are the two hardest problems in
computer science :).
Cleanup
Reformat lots of mathematical markup
Add additional sections on Boolean Algebra