Allow empty config object and use it

This removes assertions that prevent us from having an empty
git_config object and then updates some tests that were
dependent on global config state to use an empty config before
running anything.
Merge pull request #1382 from arrbee/fix-diff-patch-a-different-way

Allow empty config object and use it for tests
Updates to CONTRIBUTING and CONVENTIONS

The discussion about converting some of our foreach-style APIs to
use iterator objects got me wanting to make a list of good starter
projects.  I put it in CONTRIBUTING.md and then went crazy with
updates to that file and to CONVENTIONS.md.
Simplify diff example using revparse

When the examples/diff.c was written, there was not yet a revparse
API.  Now we can use it to make command line parsing way better
with less code.  Yay!
Fixed a couple typos
Merge pull request #1386 from arrbee/update-docs

Update contributing and conventions
indexer: kill git_indexer

This was the first implementation and its goal was simply to have
something that worked. It is slow and now it's just taking up
space. Remove it and switch the one known usage to use the streaming
indexer.
Merge pull request #1387 from carlosmn/kill-indexer

indexer: kill git_indexer