Pipe to Port Binding

This dialog is the first step in configuring a module.  To the left is a
scrollable list of colored buttons representing the input pipes of the
current module as well as a button for User Input, which can be thought
of as another input pipe.  A module's input pipes are named after the
upstream module that they are connected to.  On the right is another 
scrollable list of uncolored buttons representing this module's input 
ports.

Clicking on an input pipe and then clicking on one of the input ports 
(or vice versa) will cause the selected input pipe to be "bound" to the
input port.  This means that the input port can only be satisfied by
records from that input pipe (or a constant value in the case of User
Input).

The input port will take the color of the input pipe it is bound to to
indicate the binding.  Bindings can be changed until CONTINUE is
pressed.

The only restrictions on bindings are that User Input can not be bound to
all input ports and that all input ports must be bound before you can
CONTINUE.

CLEAR causes all input pipe to input port bindings to be cleared, and
RESET causes the bindings to be restored to what they were when this
dialog was first brought up.

Note that RESET and CLEAR have the exact same behavior the first time
the module is configured.

