add an abstraction layer for SCM support
updates from review
Merge pull request #644 from dart-lang/devoncarew_scm

add an abstraction layer for SCM support