Replace calls to BufferChanged callbacks with BufferObserver pattern

As mentioned in Limetext issue #427, the BufferChanged callbacks pattern should be refactored to encourage cleaner code and a unified interface for monitoring changes to buffers. To that end, this pull request implements this new pattern and does away with the old "AddCallback" method.