feat(Core): Allows for multiple instances of Inject

Previously, only one global "Inject" object could be used at a time
this changes the behavior to allow multiple versions of Inject to
exist through the new Inject.createContext(baseUrl) method. This same
method is used to populate the global Inject, require, and define
variables. While this does not introduce backwards compatibility
directly, the change is large enough to warrant a minor version bump.

All tests were updated to reflect the new syntax.

BREAKING CHANGE
In order for AMD tests to pass under the new system, the signature
for addFetchRule changed from callback(errors, result) to the documented
version of callback(result). Errors are created by simply throwing an
exception.