Default splice matching block types else use explicit /SPLICE (CC #2057)

This implements the nicer invariant that splicing of any-block types for operations such as INSERT, APPEND, and CHANGE only happens if the block types match ([CC #2057](http://issue.cc/r3/2057)).  Otherwise you have to ask for it explicitly:

    >> append [a b c] [d e f]
    == [a b c d e f]

    >> append [a b c] 'd/e/f
    == [a b c d/e/f]

    >> append/splice [a b c] 'd/e/f
    == [a b c d e f]

For the moment, /splice overrides /only and does not signal an error, if for some reason you use both.  I'd probably prefer an error myself, but @BrianH wants to avoid conflicting-refinement-errors:

    >> append/only/splice [a b c] 'd/e/f
    == [a b c d e f]

The PARSE behavior for CHANGE and INSERT required modification as well to support this.  If you have `x: [1 2 "foo" "baz" "bar" 3 4]` then this is how it goes for some various cases:

    >> parse x [some [to string! change [some string!] [mumble]]] probe x
    [1 2 mumble 3 4] ;-- as before

    >> parse x [some [to string! change [some string!] only [mumble]]] probe x
    [1 2 [mumble] 3 4] ;-- as before

    >> parse x [some [to string! change [some string!] (mumble)]] probe x
    [1 2 (mumble) 3 4] ;-- new behavior, dropped parens before by default

    >> parse x [some [to string! change [some string!] splice (mumble)]] print x
    [1 2 mumble 3 4] ;-- new behavior, splice joins only as parse keyword

If your x was instead in parens, then this would be different, e.g. with `x: quote (1 2 "foo" "baz" "bar" 3 4)` for these cases:

    >> parse x [some [to string! change [some string!] (mumble)]] probe x
    (1 2 mumble 3 4)

    >> parse x [some [to string! change [some string!] [mumble]]] probe x
    (1 2 [mumble] 3 4)