Mega update

This commit touches a huge amount of the source code. The major change
is that Boolean Functions no longer return integer 0/1 values. They will
always return an instance of a Function, and therefore all have constant
subclasses.

Also, another major change is getting rid of lots of __new__ magic,
especially on Variable instances. Now you need to use exprvar, ttvar,
bddvar factory functions to get variable instances, which are still
supposed to be singletons stored in the module instance.

We also removed the pyeda/binop module, b/c it didn't seem all that
useful.

The following new methods were added to Function interface:
* is_zero
* is_one
* box
* unbox

The following methods were removed from the Function interface:
* reduce
* iter_zeros
* iter_ones

The 'reduce' method doesn't seem univeral. Truth tables and ROBDDs are
already canonical forms.

The 'iter_zeros' and 'iter_ones' methods didn't seem fundamental.
Also, the implementation sucked b/c it implemented a recursive
algorithm from within a class instance, which is a pain.

Changed the Expression instances so they do not automatically simplify.
Changed all the class names from Or to ExprOr, etc. Now Or, And, etc,
are factory functions that can do simplification and factorization on
expressions.

Changed the TruthTable instance so use does not use TruthTable class
directly. Instead, use the new 'truthtable' factory function.

Changed expr => nfexpr converters. Now there's a expr2cnf and expr2dnf,
as well as expr2nf.

Added a NF_Not convenience function for inverting normal form
expressions.

Added an official DPLLInterface abstract class, and did a bunch of
refactoring on the SAT algorithms. Using untyped points for everything
makes things seem more simple.

That's pretty much it, but I'm sure I forgot something.