Introduce a model to abstract SCM service integration

[finishes #80208778]
I think if you rebase you should be able to use filter from the upgraded serializer gem.