Add event observers

By observing these events, we can fetch remote grades immediately after
they are changed.
Add Behat tests for the recent improvements