Make evaluation of lists of bits non-strict in the elements.

This means that e.g. [True, error "foo"]@0 evaluates to True,
similar to how [0x1, error "foo"]@0 evaluates to 0x1.
Share more code between interpreter and symbolic simulator

Some interpreter/simulator operations are now overloaded using
a newly introduced 'BitWord' type class.