Adds support for choosing which module systems to target

There are times, particularly when targeting globals, when different module systems require slightly different implementations. To facilitate this, I added support for specifying different module systems.

Example:
```js
var moduleTree = compile(srcTee, {
  global: 'Test.Package',
  packageName: 'test-package',
  main: 'main',
  targets: [ 'amd', 'cjs', 'named-amd' ]
});

var globalTree = compile(srcTree, {
  global: 'Test.Package',
  packageName: 'test-package',
  main: 'global-main',
  targets: [ 'globals' ]
});
```