Eliminate unnecessary rerun of test_width in case statement elaboration.

Also fix a typo in a comment.
Added pruning of case statement expressions.

When unsized literals are used in case item expressions, it is likely
that the calculated expression width will be larger than necessary to
unambiguously select the correct case item (particularly when using
"strict" expression elaboration). This patch adds an optimisation
step that prunes the expressions to the minimum necessary width.
Fix for br962 - pop from dynamic array is not padded to correct width.

When the expression width is greater than the dynamic array width,
we need to generate code to pad the popped value to the correct
width.
Fix for br963 - vvp qpop instructions need to call thr_check_addr.
Update enumeration elaboration checks
Another tweak to the enumeration elaboration code
Only a literal constant size has to match the enumeration width.
Basic patch from github #44
More refined check for enumeration width and constant width
Enumerations are compatible if their type definitions match.
On a 32 bit system you can print a 32 bit value as a long (verinum)
Make asynchronous case statement synthesis more robust.

Added various error/warning messages for behaviour not supported
in synthesis. Also give correct behaviour when multiple case item
expressions evaluate to the same constant value.
Merge branch 'master' into vec4-stack

This was a challenging merge...
Conflicts:
	elab_scope.cc
	synth2.cc
	tgt-vvp/eval_expr.c
	vvp/vthread.cc