Fix pulling when preexisting obsolete commits exist
This fixes an edge case where a pull could fail if the remote commit already exists, but is obsolete. In addition, it includes the ability to update bookmarks over obsolete boundaries, extracted from !117 (closed).
Edited by Dan Villiom Podlaski Christiansen