It would be nice to keep the `addIdleObserver()` and `removeIdleObserver()` close to each other in the code.  Right now they are in two different files.

How about moving the `addIdleObserver()` to the `IdleObserver` constructor and then creating a `IdleObserver.stop()` function that calls `removeIdleObserver()`.  Then we would call this new `IdleObserver.stop()` from here.

I think ideally, though, all this logic in `DatastoreMigrator.onIdle()` would be moved out of `datastore_migrator.js` and into the `IdleObserver` itself.