Adds support for choosing which module systems to target

There are times, particularly when targeting global, when different module
systems require slightly different implementations. To facilitate this,
specifying module systems is now supported.

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' ]
});
```