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.