When we checkout with a `branch` object, what do we set the current Head to? If it is the the branch reference (e.g. refs/heads/master) then we might check out a working directory that does not match the current branch tip - resulting in a dirty working directory. This seems a bit unexpected to me, especially if I check out with a `Force` option, where I would not expect a dirty working directory... Thoughts?