Make client-side module names contain their paths

This revamps how cleint-side modules are named so that they include their path. This allows allows you to write module imports using relative paths as you would in Node.js with `require()`.

When modules are being compiled and when the dependency graph is generated, all relative imports are resolved against the importing module's own path, relative to some base path.

Also, the YUI config has been updated to split the vendor scripts from the ES modules.

Fixes #272