model: schedule appropriate fence backtracking points
This patch calculates the most recent backtracking point which may be a
fence. We require a separate function for computing this because a fence
"conflict" is much different than other conflicts; fences do not have a
memory location, but instead, they trigger release/acquire backtracking
in the presence of other stores/loads.
Left out of this patch:
(1) Sleep-set waking: even if we backtrack, we don't yet wake up our
thread properly, yielding a "redundant" trace instead of a
productive one
(2) memory_order_seq_cst: I have yet to determine how (if at all) we
need to add additional backtracking in the presence of seq_cst
fences
(3) documentation: need to describe get_last_fence_conflict() better