working version of require
next: use Loader properly
new working version
require uses self loading cache
fixed circular references
lots of changes