Use `patch --force` to ignore missing files when patching

From patch(1):

    -f  or  --force
       Assume that the user knows exactly what he or she is doing, and do  not
       ask any questions.  Skip patches whose headers do not say which file is
       to be patched; patch files even though they have the wrong version  for
       the Prereq: line in the patch; and assume that patches are not reversed
       even if they look like they are.  This option does not suppress commen-
       tary; use -s for that.

Fixes #555
Make `--patch` compatible with git diff patches

Filenames in git diff patches are prefixed by default by "a/" (source)
and "b/" destination. Such patches don't work with ruby-builds `--patch`
option since it internally uses `patch -p0`.

Prior workarounds were to use either an intermediate step:

    filterdiff --strip=1

or to generate the patch without the prefix in the first place:

    git diff --no-prefix ...

Now, git diff patches are detected by searching for this pattern:

    diff --git a/...

And `patch -p1` is used by default in such cases to strip the 1st
component of filename paths.

Fixes #521, closes #484
Fix patch passed via stdin in tests

[picture of I Have No Idea What I'm Doing dog]

https://travis-ci.org/sstephenson/ruby-build/builds/23435342
More portable invocation of `mktemp`

`mktemp -t ruby-patch`, although working on OS X, fails on Travis CI
with the message "too few X's in template".

https://travis-ci.org/sstephenson/ruby-build/builds/23436088
Merge branch 'patch-galore'