[WIP] More correct reference updating

I realised that I never updated the references to the new method of updating. For now I've left `Reference.target=` as a proxy for the method call, but eventually we might like to remove it completely. Not specifying a message for the reflog significantly reduces the usability of the tools, so we should not provide a way to update which does not expose the existence of the reflog update.

We will also need to get rid of `Reference.log_append()` as that is now done as part of the reference update (due to race conditions and correctness wrt locking) and you should never call it directly.