Add handling for restartable sequence corner cases
This covers handling some corner cases for restartable sequences ("rseq") which our original implementation for #2350 (closed) does not handle. These are from the list at https://github.com/DynamoRIO/dynamorio/issues/2350#issuecomment-532401625
There are a number of corner cases left to cover, but they are lower priority. These are things like:
- Invoking the 2nd execution on a sequence midpoint exit (maybe leveraging __rseq_exit_point_array)
- Handling indirect branch exits out of a sequence
- Remove the -rseq_assume_call option once we're satisfied we'll never go back to it
- Add more sanity checks for existing requirements/assumptions