Allow non fast forward push.

This enables non-fast-forward commits to be pushed.

@devoncarew 
Will this entry in the map always have a value? If not, this code will run in JS, but fail in Dartium checked mode. `(knownShas[commit.sha] == null || !knownShas[commit.sha])`.