import os.path

I moved `import` to its own file, because I think that imports are going to end up being quite a beast. To progress, you really need to understand CPython's `import.c`, which is hard to read because it deals with all sorts of platform-specific code among all the "real logic".

I left `importFrom` and `importStart` in `objmodel.cpp` because they felt more like object manipulation and getattr'ing.

Anyway, the point of this commit was to import `os.path`. It turns out this is pretty simple. When you import `os.path`, you import and run `os` first. Then, `os` adds `os.path` to `sys.modules` (choosing the module dynamically in a platform-specific way). Finally, you try to import `os.path`, see that it is already in `sys.modules`, and use that.
Oops, I had forgotten I added that! I was thinking of adding functionality for packages and submodules, but I ended up not, and that line doesn't make a whole lot of sense without code that actually sets `__path__` when it imports a package. I guess it's not doing any harm, although I should  at least make it throw an exception instead of segfaulting, as you pointed out.

So to clarify, the important part of this diff (which makes `os.path` work) isn't the `__path__` thing; it's the part that checks `sys.modules` after importing `os`. That is, this part:

```
if (sys_modules->d.find(s) != sys_modules->d.end())
    return sys_modules->d[s];
```