Updated module resolution logic and added exclude.

In order to accomplish this fix, I had to add a new constructor, Module,
that handles the name resolution.

- Added logic for excluding modules.  This will substitute any excluded
  module with undefined.  It will also not include the source into the
  final output.
- Added a test to confirm the expected output.
- Broke out the optAndRun method into a separate utils file.
Fixes the incorrectly assigned dependency normalization.
Merge pull request #11 from tbranyen/exclude

Exclude option.