Correctly handle circular dependency

Requiring a module, which is yet to finish its execution, must return exports
available at the time the require call was made.

Should fix #30