Fix assigned vector size in constant user functions.

When assigning to a bit/logic variable, the RHS expression value
must be trimmed to match the size of the variable.
Handle uninitialised variables in constant user functions.
Add control to enable function evaluation at compile time.

Pure functions with constant operands can be evaluated at compile
time rather than at run time. This patch provides a global control
to enable this optimisation. Until constant function support is
complete, by default it is disabled.
Support disable statements and system task calls in constant functions.

This patch implements the evaluate_function method for the NetDisable
and NetSTask classes. It also makes the checks for a function being
constant work when the function contains nested scopes (named blocks).
Improved error reporting for constant user functions.