Use git rev-parse instead of git log --format=%H.

This is a little cleaner and it's better to rely on git plumbing than on
porcelain.
Use git diff-index to check for dirty index.
Fix output to go to stderr.
Use git-diff-tree to determine differences.
Add some more ignore files, mainly for future composer stuff.
Default getFiles to working directory.
Add file not exists check in case file given doesn't exist in working dir.
Only show changes for tracked files.
Handle quiet output without duplicate code.
Ensure git checkout output goes to stderr.
Use composer for phpcs setup.
Allow code directory to be specified for mergeReport.
Cleanup formatting.
Fix parent merge detection.
Abstract out git checkout.
Always restrict changes to files we care about.

The main reason I wasn't doing this was because of not wanting to code
the extra step to have it work with new files and/or deleted files.
That wasn't as bad to solve as I thought it might be, so here we are :)
Just ignore output from git checkout.
Change prCheck to use mergeReport.

To do this properly we needed a way of specifying what the base commit
should be for the merge.  This appears to work pretty well, at least for
unmerged changes.
Use git-merge-base to remove issues when the base is ahead of the new.
Add the ability for the prCheck to comment back on github.

In order to use this, you'll need to generate an oauth token and pass it
in.  This curl call works:

curl -i -u YOUR_USERNAME -d '{"scopes": ["repo"]}' https://api.github.com/authorizations

It should hopefully be easy enough to build on this and get it automated
and even more useful.