Optimizations:
1. When a transistor is turned on, only add one of the nodes it
controls to listout, otherwise group calculation would be done twice
for this group. This simplifies recalcNodeList(). (This required
the following change: Instead of adding the nodes that control
transistors that have changed to listout, put the nodes that are
switched by transistors on listout.)
2. The group value is calculated while collecting nodes, and the enum
group_contains_value makes sure we don't check for weaker value
indicators than have already been established.
3. listout is now a set, no node will be visited twice for group
calculation, within one interation.
4. When setting input pins of the package to a value, only recalc the
node if it actually changes.
5. Toggling a transistor is done by assigning it the group value
instead of the inverse of its value.
Cleanup:
* Merge the concept of listin with the concept of nodes that change
from the outside and trigger a recalc.