Introduce a model to abstract SCM service integration

[finishes #80208778]
Big ol' block of commented out specs here.