Base commit for service layer for repo diff tooling

Test: Changes are currently independent of the rest of this project. Tests can
currently manually be run with "make test". CL is large, but poses no
risk

Change-Id: Ia77e073df077257cab96b7ca4e1d99a900d029b2
50 files changed