Handle exceptions thrown by util.makePromise callback.
Introduce the notion of a preferred file extension to the BuildContext.

Closes #12.
Enable readMultiP to accept a promise for an array of promises.
Allow glob patterns in the list of root module identifiers.

Notworthy change in behavior: giving no identifiers now means "process everything in the source directory" instead of "do nothing."

Closes #9.
Don't attempt to glob-expand module identifiers.

And filter out glob matches that aren't valid module identifiers.
Tests for util.flatten.

Found and fixed an esoteric bug related to array holes, too.