multi bundle support

* .require api changed to .require(name [, opt]);
This is a more flexible require api. Options now contains things like:
entry and expose to indicate if the required path|module will be an
entry point and whether it should be exposed. This will also work nicely
with replacing certain requires with shim files as requested in #290

* .external(file) api added to educate a bundle about files which live
in other bundles. Files marked as external will not be included in this
bundle and will expect that the bundle containing that file will already
be loaded on the page. This is done via hashing of the full file path to
make the require lookup work.

* .add(file) is now an alias to .require(file, { entry: true })

* module ids start at 1 to make if(id) checks easier

* -x command line flag added for manually making multi bundles. See the
readme for documentation.