Rewritten contributing guide

In response to discussions with Sergei, I expanded the contribution guidelines to better match what I see as the current best practices in this area. These instructions are actually very generic and were drawn from other large open source projects such as Git, Mercurial, and OpenStack:

* https://github.com/git/git/blob/master/Documentation/SubmittingPatches
* http://mercurial.selenic.com/wiki/ContributingChanges
* https://wiki.openstack.org/wiki/GitCommitMessages
* http://dev.solita.fi/2013/07/04/whats-in-a-good-commit.html

The page used to be very short and basically refer people to the C4 document. It no longer refers to C4, instead it "inlines" some of the guidelines directly (mostly the rules about each patch being about one thing only). I find the document much more pleasant to read like this compared to the bullet form used before. This means that the review process is described in more detail and we now explain how we hope the commits look like.

I included a section at the bottom with Git tips and tricks -- the commands needed to solve common problems. This probably needs some expansion as people run into other problems.