Allow non fast forward push.

This enables non-fast-forward commits to be pushed.

@devoncarew 
ditto here, re: checking if knownShas[...] != null, if that could be a legal value