This also fixes a minor bug with %store - it should print an error if you try to %store a class/instance/function defined in the interactive namespace. But the implementation was based on us using `FakeModule` for the interactive namespace, which we weren't since I reorganised the interactive namespace machinery some time ago.

This isn't perfect, since if you `%run subdir/a.py`, things defined in that script will have the module name `a`, which isn't importable, but it won't warn for those. We could mark modules created for `%run` with some extra attribute that `%store` checks, but I'm not sure that it's necessary.