`with_result_backtrace` context helper method

This method takes a backtrace and block.  It then runs the block and
takes any non-error results generated by the block and replaces their
backtrace with the given backtrace.

This allows 3rd-party tools to write their own custom assertions
and have them abstract the 3rd-party backtraces that any fails
would have.

An example usage would be:

```ruby
def assert_some_custom_behavior(*args)
  with_result_backtrace(caller) do
    # asset some things (generate results)
  end
end
```

**Note**: this _does not_ affect error or skip results.  Those results
are generated by raising exceptions that halt
backtraces should remain pure to help with debugging.