(Binary Analysis) Changed SymbolicSemantics::ValueType<>::defined_by()

The defined_by() method was used by SymbolicSemantics::Policy in a manner
which made it impossible to subclass SymbolicSemantics::ValueType.  This
commit changes the use, and also changes the declaration so that the
offending use is no longer possible.

This commit also fixes a bug in the SymbolicSemantics built-in
def-use tracking.  One of the RISC operators didn't update the list
of defining instructions for its result value.  This bugfix caused
many of the tests to produce slightly different answers.

I improved the tests so they're not as sensitive to changes in the
way memory states are numbered.
(Binary Analysis) Added more examples for instruction semantics subclassing
Merge commit 'fd621a5985d8c072d7198f78e5b59264a9d53dd0' into HEAD