Convert ChangeInserter to the builder pattern

Like PatchSetInserter, the goal is to cut down on proliferating
methods and reuse this code from more places. However, because of the
way it is currently used from ReceiveCommits, some things like commit
validation and ref updates will be harder to move into ChangeInserter.

Change-Id: I457c92ffeb7f5de1fa9aa8f0da21e4b2b3fed1b1
7 files changed