Make deduce_alpha_implications() handle facts with Not

Previously implications like a -> !b, c -> b were not handled correctly to
deduce things like a -> !c. Now every fact a -> b adds the implication !b ->
!a, and deductions of the above for, as well as a -> b, !a -> c => !b -> c are
added.

The function still does not properly handle nested implications. That fix is
coming in a later commit.

This also changes rules_2prereq to add prerequisites in both directions (as
the docstring suggests). That is, if a -> b, a is a prerequisite of b and b is
a prerequisite of a.  This is because if a is true then b is true, and if b is
false then a is false.  This function takes its input from
deduce_alpha_implications, so making this change was necessary.