Build boot.js script using a build script

:warning: This includes backward incompatible changes that impact Montage and Mop.  Changes to those packages in the corresponding `build` branch must be coordinated and released in a future, backward-incompatible release.  Some care will be needed to ensure that `mop` in particular depends on compatible versions of `mr` and `montage`.

This introduces a program, `mrs`, that can create stand-alone scripts from modules that only need the ability to produce and consume CommonJS modules with `require` and `exports` or `module.exports`, and depend only on a static working set.  The resulting script has very little overhead and is based on the build products of Browserify.

`mrs` is sufficient to build `mr/boot.js` (previously `bootstrap.js`)from the CommonJS modules in the `boot` directory.  Run `npm run build`to produce a new revision of `boot.js` and `boot/preload-boilerplate.js`.

This aleviates the need to perform script injection in the bootstrapping process, at the expense of introducing a build step for the bootstrapper.  This change also allows a greater level of code reuse between Mr and Montage in their bootstrapping processes.  This also obviates the need to embed UMD boilerplate in these modules, since they will always be used as CommonJS modules, either as sources for the build or as instruments of Node.js.

Since `mrs` embeds the entirety of `boot.js`'s dependencies, it is no longer necessary to use a subrepository for these dependencies and no longer necessary to use hard-coded relative locations for these dependencies in `package.json`.  These dependencies may now be installed by NPM and the maintainers of Mr and its dependencies no longer need to coordinate or hard-code their dependency trees.  This is important because Q will soon be breaking up into smaller modules and packages.

The `mini-url` module may now be a CommonJS module shared by Montage and Mr.  Within Montage and Mr, it may be required by the name `url`.  A mapping in `package.json` directs the module loader to use `mini-url.js` instead.  On the Node.js side, where `mini-url.js` would not work, we fall back to Node.js's `url` module, which has an API that is a strict super-set of `mini-url.js`'s.
Add support for compilers
Add support for translators
Inherit translators and compilers from dependencies
Add support for redirect patterns

Inherited by dependee packages.
Fix main linkage for relative identifiers

Previously, a package with a "main" property that started with "./"
would be linked incorrectly.
Add tests for main property of package.json and fix for Node
Anonymous require in boilerplate

Instead of allocating a require function for every call, only create the
closure if it’s needed.
Support Node.js __filename __dirname

If you can't beat 'em, join 'em.

Also, some Node.js/npm packages depend on this and we would like them to
work without modification, even if they're using bad nonstandard
variable names that shouldn't have been made in the first place.
Delete module text after compile

Since it just makes the application heavier at run time.  I did have
delusions about retaining it and scraping the text for debug purposes,
but those illusions can be restored some other day.
Use module.require that resolves relative ids

Previously, each module descriptor shared the root package object.  This
made identity checks on the package object possible for test for package
equivalence, but `require.location` is a better practice anyway.  The
advantage of this new approach is that `module.require` is the same as
`require` and can be used to resolve module ids releative to the module.
Add package to require errors
Fix overlays + compilers and redirects

These features previously did not compose.  Now, compilers and redirects
are captured from the configuration after overlays have been applied.
Fix for setimmediate package

The setimmediate package has a setImmediate.js main module, so we have
to take care not to throw a warning about inconsistent module
identifiers.
Normalize redirects

This has the happy side-benefit of increasing support for packages
designed for Browserify, since the `browser` field gets converted to one
or more `redirects`.
Remove support for directories configuration

Existing packages in Node.js/npm ecosystem use a "directories" property
to indicate that modules are in the "lib" directory, but Node.js does
not read this configuration, so the user still has to include "lib" in
module identifiers.  This is not according to spec, but the behavior of
ignoring the "directories" property has become a de-facto spec and these
packages will not load with Mr if we persist in reading
`directories.lib`.  Also, there's no point in fighting the
`node_modules` dependency packages directory configuration any longer.
I have lost that fight.
Merge branch 'drop-directories-support' into configurability

Conflicts:
	boot.js
	boot/boilerplate.js
	boot/browser.js
	boot/preload-boilerplate.js
	package.json
	require.js
	spec/require-spec.js
Elide translator modules from build products

The Mr standalone bundler can now use translators that only load on
Node.js, and will never include a translator in a bundle.
Melt off Extensions and Path loaders

Replace with simple location loader.  We don't branch.