Add optional strict-object-checking on output objects

Limited use really, as the objects we output are just fine - we need
to verify the incoming ones which appear to kill git-filter-branch!

For instance in the Linux kernel:

commit af25e94d4dcfb9608846242fabdd4e6014e5c9f0
Author:  <>
Date:   Fri Jul 1 23:27:00 2005 -0700

    [IA64] Make ia64 die() preempt safe

    Signed-off-by: Keith Owens <kaos@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

ram disk:
$ time git filter-branch --index-filter 'git rm --cached --ignore-unmatch CREDITS' --prune-empty --tag-name-filter cat -- --all

Rewrite af25e94d4dcfb9608846242fabdd4e6014e5c9f0 (4198/343296)rm 'CREDITS'
fatal: empty ident  <> not allowed
could not write rewritten commit

real	11m18.753s
Fix for #7 - crash/unnecessary work when running BFG twice on same repo

The BFG attempts to translate any hex string it sees in commit messages,
so long as that hex string corresponds to an object id that the repo
actually contains.

If it has actually spotted a 'former commit' then this can easily blow
the stack, but even if it didn't, it would involve doing a lot of
unnecessary work, cleaning commits that are no longer referenced...
fixing stackexceptions is one thing, but this commit addresses the
unnecessary work by removing doing a git prune to remove all
unreferenced objects - so that legacy objct ids can not trigger work.

https://github.com/rtyley/bfg-repo-cleaner/issues/7