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
added definition of 1.9.3-p547
Merge pull request #573 from hone/ruby-1.9.3-p547

added definition of 1.9.3-p547
add rbx-2.2.7
Merge pull request #575 from subledger/rbx-2.2.7

add rbx-2.2.7
Merge branch 'patch-galore'
Replace MD5 commands with SHA2 equivalents

A more secure hashing algorithm makes it less feasible to serve up a
modified tarball that matches the same checksum.

See the discussion in #548
Re-introduce legacy MD5 checksum verification based on checksum length

This is so any 3rd-party definitions continue to work even if they have
MD5 checksums embedded.
Replace all MD5 checksums with SHA2 checksums
Merge remote-tracking branch 'origin' into shasum
Switch remaining MD5 checksums to SHA2
Update Readme for MD5 -> SHA2 checksum change
Merge branch 'shasum'

Fixes #548, closes #551
ruby-build 20140524
Add `release` script

The script handles bumping up the version number, committing, tagging
and updating the Homebrew formula. The last step requires `hub` to be
installed in order to submit a pull request to Homebrew.

/cc @sferik @hsbt

[ci skip]
Fix `fetch_git` with `--keep`

Update existing git repo if exists, or clone if not exists.
The destination repo might exist if the `--keep` was supplied for `ruby-build`.
Add tests for `fetch_git`