Only calculate the output set for a begin/end block when needed.

For synthesis we remove the output set of signals from the input set to
remove temporaries from the final sensitivity set. The @* construct also
uses the input sensitivity list, but because it can include statements
that cannot be synthesized we should not calculate the output set for this
case. Not find the output set is also a speed enhancement since the output
set was already being ignored later in the code for this case.
Fix pullup/pulldown behaviour for tri1/tri0 nets.

Currently vvp only applies the pullup/pulldown for tri1/tri0 nets when
the net is not driven. The correct behaviour is to treat the pullup/
pulldown as an extra driver (with pull strength).
Fix errors in constant propagation.

Ensure undriven, multiply-driven, and forced nets are correctly handled
by the constant propagation optimisation pass.
Make tgt-vvp insert a BUFT for pulldown devices.

A BUFT is needed to allow a force to override the pull value. This had
already been done for pullup devices, so factor out the common code and
use for both pullup and pulldown.
Eliminate spurious error message for array word lval in always @* block.
Merge branch 'master' of git://github.com/steveicarus/iverilog