Improve watching files. Cleanup files that are not required anymore.

Now only files that are modified are re-parsed. Those modules are
invalidated and will be parsed again. When require() calls are removed
those modules are removed from the cache too.