[git wrapper] defend against helpful git

When using `GIT_SSH`, git attempts to detect accommodate the use of
`Plink.exe` by simply matching against `plink`. If detected, git adds
`-batch` to the command invocation which breaks our wrapper scripts.

Filter this specific case. Ref: Triage-5683, US729
Merge pull request #104 from engineyard/plink

[git wrapper] defend against helpful git
Support experimental ey.yml options `keep_releases` & `keep_failed_releases`

Changes the number of releases or failed releases that will be kept
after the deploy has finished.
Warn if we skip a non-executable "executable" hook.

We only execute hooks if they have both the correct name and are
executable. If there's a file that has a hook-like name but is not
executable we still don't run it, but now we output a message so that
it's more obvious why it has not been executed.
Merge pull request #107 from engineyard/warn-exec-deploy-hook-not-executable

Warn if we skip a non-executable "executable" hook.
Merge pull request #106 from engineyard/keep-releases

Support experimental ey.yml options `keep_releases` & `keep_failed_releases`
Show a warning (not status) when an apparent executable deploy hook is skipped
Vendor json_pure to keep multi_json from complaining about ok_json
raise when waitpid2 returns non-nil that isn't a pid.

This isn't something that should ever happen.
I can't reproduce it locally, nor can I find documentation showing
any other response other than a pid in ruby or unix/linux docs.
Nevertheless, it is occurring on at least one customer instance,
so hopefully the error output here will help us track it down.
Give better errors when waitpid2 returns an unexpected value
Merge pull request #105 from engineyard/json_pure

Vendor json_pure to keep multi_json from complaining about ok_json
Fixes release cleanup for `before_deploy` hook failures.

Combine `copy_repository_cache` and `with_failed_release_cleanup` to
prevent code from being inserted between the two methods that prevents
cleanup of the release directory.

Previously, hook failures would not trigger the cleanup of the release
directory because the code occurred between the two methods above.

The two methods need to be executed one after another, so the new method
`new_release` will enforce the contract without altering the behavior of
the deployment for applications.
Merge pull request #108 from engineyard/before-deploy-move

 Fixes release cleanup for `before_deploy` hook failures.
Maintenance still up notice => status for visibility without stickiness

It's confusing when the maintenance page still up notice is posted on
the dashboard and sticks around after the maintenance page has been
taken down. The work has already been done in the dashboard to treat
maintenance requests as first class citizens, so this could be solved in
a better way soon.
Merge pull request #109 from engineyard/maintup

Maintenance still up notice => status for visibility without stickiness
Merge pull request #101 from engineyard/waitpid-error

raise when waitpid2 returns non-nil that isn't a pid
Bump version for release 2.4.2
Add .pre for next release
use timecop rather than microseconds
Merge pull request #111 from engineyard/timecop

use timecop rather than altering the release directory timestamp during tests