Replace change_history with DocumentHistory

For confidence that behaviour is maintained, we just swap out the
implementation for now.
Make DocumentHistory enumerable