Fix unwind passing of REDUCE

This fixes CureCode issue #1760: "Unwind functions don't propagate from
REDUCE".
Fix unwind passing of WHILE

This fixes CureCode issue #1519: "Unwind functions don't propagate from
WHILE condition block".
Fix unwind passing of set-word! and SET

This fixes CureCode issue #1515: "Unwind values are assignable with
set-word expressions, SET or SET/any".
Fix unwind passing of functions accepting error!

This fixes CureCode issue #1509: "Unwind functions don't propagate when
called in function arg expression that accepts error! values"
Fix unwind passing of APPLY
Fix unwind passing of set-path!
Fix unwind passing of AJOIN
Add comments to point to where unwinds are handled
Fix unwind passing of functions with 2+ arguments

This is a fixup to 9cb32ac. The original change was only sufficient for
functions taking exactly one argument (such as the `error?` function).

This fixup now correctly handles unwind passing in multi-argument
functions as well (such as `type?` which takes two arguments: one
regular, one refinement):

    >> foo: func [x y] []

    >> foo break 1
    ** Throw error: no loop to break

    >> foo 1 break
    ** Throw error: no loop to break

    >> foo break continue
    ** Throw error: no loop to break

    >> foo continue break
    ** Throw error: no loop to continue

Corresponding tests have been added to the test suite
(rebolsource/rebol-test@87073d4).
Merge pull request #180 from earl/fix-unwind-passing

Fix unwind passing (CureCode issues 1509, 1515, 1519, 1760)