Add support for pure, non-constant, and reloading imports.

A pure import acts like a normal one, but does not update the namespace.
Pure imports may import modules with non-constant names; for instance,
while

    m = "/os"
    import m

would fail,

    m = "/os"
    import m pure

would not. Reloading imports are basically normal imports, but they call
`importlib.reload` when done. If a module was imported earlier, it is reloaded.
If it was not, it is evaluated twice.