assertions: Extract assertion capture helper
assertions: Extract assertion capture helper

`run_command_then_run_assertion_in_subshell` uses the same process
substitution pattern as `@go.log_command` to capture the assertion's
results without contaminating the Bats `output`, `status`, and `lines`
variables. This helps avoid calling `eval run $command` redundantly, and
eliminates the hack from #75 to tack extra newlines onto `output`.

Also removed the `set +o functrace` from `check_sets_functrace`, since
upcoming checks for compound assertions (assertions built up from other
assertions) will be thrown off by it. This is because I'm about to
refactor `return_from_bats_assertion` to automatically `set -o
functrace` only if its caller matches `BATS_PREVIOUS_STACK_TRACE[0]`,
and calling `set +o functrace` before the assertion will cause this to
fail.

If an assertion doesn't call `set +o functrace` at the beginning, the
final `check_expected_output` checks from `expect_failure` will still
catch it.

mbland/go-script-bash