Changed fanout set->dst back to a count

There might actually be multiple times we fan from one node to
another—squaring, etc.
Added back `useless' fans

Added back useless fans, now just keep track of things as outputs—fans
are a `next level’ part to think about. At this level, we think of the
output. This way, we know how everything connects. Restriction to
useful fans is easy at the next stage.
Small style fix
Wrapped node classes in module

Wrapped node classes in module, now names can be used without
clobbering work.
Removed prodmap

Not really necessary given the information we’re generating now.
Duplicating keys and values

Removing aliasing. This way when we update fans, etc it won’t break
anything else.
Calculated output added

Users can specify what order of y they want to output, which is added
to the resulting graph.
Initial commit of adding fans

Adding fans to the output graph.
Updating node-output map with fans

Fans are calculated, then we change the output mapping to respect the
fans.