Require returns the actual module.exports object

The current implementation is using a temporary object, breaking compatibility with node's require and making some pure nodejs components to stop working (see #30).

Node's require always returns a valid module.exports value, like component/require@0.2.2 was doing. This pull uses that original implementation plus a change to allow typeof module to be "object".

The difference with #31, which solves the same issue, is that this change does not rely on temporary objects or caches.