Eliminate deprecation warnings in unit tests
Implement farray +* operators

This will work for both Function:

a * 2 = [a, a]
a + a = [a, a]

and farray types:

xs = exprvars('x', 3)
ys = exprvars('y', 3)
xs * 2 = [x[0], x[1], x[2], x[0], x[1], x[2]]
xs + ys = [x[0], x[1], x[2], y[0], y[1], y[2]]

It will always flatten everything, so if you want shaped data,
use the `farray.reshape` method.
Fixup the Shannon expansion method

Previously, if you did something like this:

>>> f = Xor(a, b, c)
>>> f.expand(a)
a' & Xor(a, b, c) | a & Xor(a, b, c)

This is logically equivalent, but doesn't quite get Shannon expansions
correct.

The correct expansion would restrict a=0/1 in the original function
during the expansion:

>>> f.expand(a)
a' & Xor(b, c) | a & Xnor(b, c)
Replace bdd low/high with lo/hi

I got this notation from University of Illinois VLSI/CAD lecture notes.
The symmetry of lo/hi is slightly nicer than low/high.

Conflicts:
	pyeda/boolalg/bdd.py
Fixup some array syntax in 8queens doc
Add some example IPython notebooks to repo top
Get rid of unnecessary Expression overrides
Consolidate duplicate satisfy_count implementations
Get rid of deprecated __sub__ operator
Cleanup the PyLint good-names list
Get rid of unused module global
s/cons/constraints/
s/_CNT/_COUNT/
Use threading.Lock to protect Variable uniqid
Enhance some boolfunc docstrings
Minor documentation improvements