bypass: fix number of output/input ports for push/pull to 2

The documentation doesn't talk about the second port being optional, and
it doesn't seem like it was intended.

Signed-off-by: Patrick Verkaik <patrick@meraki.net>
bypass: fix consecutive bypass bug

For push, Bypass skips forward over other Bypasses to find the element
to bypass to. However, it does not skip backward over Bypasses when
finding the element to bypass from. Instead, it always uses the element
connecting to its input port. This is incorrect -- see the following
example:

pre
-> b1 :: Bypass
=> ( [0] -> [0];
     [1] -> b1_active; )
-> b2 :: Bypass
=> ( [0] -> [0];
     [1] -> b2_active; )
-> post;

Initially (both passive), b1 connects pre to post, while b2 connects b1
to post, which is OK.  However, later, if we change b2 from passive to
active, b2 connects b1 to b2_active, but this has no effect since pre is
still connected to post. b2 should instead connect pre to b2_active.

This change has Bypass skip backwards over Bypasses as well. Note that
as a result, all Bypasses in a consecutive series now take the same
actions at initialization time. In the above example, b1 and b2 both
connect pre to post.

The above description is for push. For pull, the corresponding bug and
bug fix apply.

Signed-off-by: Patrick Verkaik <patrick@meraki.net>
bypass: don't skip over inlined bypasses

Bypasses that are inline are like non-Bypass elements.

Signed-off-by: Patrick Verkaik <patrick@meraki.net>