Refactor CommitSoyData to use more of a builder pattern

These are created one-off on every request thread, so making them
mutable is safe enough, and it allows us to get rid of the messy
constructors. Be more explicit about which keys require which optional
arguments.

Change-Id: Ic175369898c206278bd8bc862bef0744b27ee79a
6 files changed