slist: introduce merge_fake_stree()
This process of having fake_strees is very subtle and tricky but we also
need it.
How a fake stree works is that we store the current stree, then we put a
layer on in front of the current stree to record any states which are
changed. Then we look at the code. This gives us a list of states which
are affect by this change.
The problem that this patch addresses is that we want to merge two fake
strees together, but there is an unmatched state. Instead of defaulting
to &undefined, we should default to the original state.
You might ask why we don't just use all the states and not just the set
ones? I did try that, and it didn't work...
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>