feat(urls): support relative CSS / template URLs in components

Example:
When defining a component called 'foo' in file
'/myproject/has/many/folders/foo.dart', prior to the change you would
do so thusly:
@Component(
   selector: 'foo',
   templateUrl: '/myproject/has/many/folders/foo.html',
   cssUrl: '/myproject/has/many/folders/foo.css'
)

The above is still valid, but now can also be defined rather more
succinctly as:
@Component(
   selector: 'foo',
   templateUrl: 'foo.html',
   cssUrl: 'foo.css'
)

A full table of what URLs will be changed/unchanged is below:
You Say:				Transformer replies:
'packages/foo/bar.html'			'packages/foo/bar.html'
'foo.html'				'packages/foo/bar.html'
'./foo.html'				'packages/foo/bar.html'
'/foo.html'				'/foo.html'
'http://google.com/foo.html'		'http://google.com/foo.html'

*Note  that as  shown any absolute paths you define will not be
bothered by the transformer, so if you have a templateUrl living at
<root>/foo.html, you can still reach it with '/foo.html'!

BREAKING CHANGE:

You must update relative paths to your templates and in ng-include's to
be relative to the component's library / ng-include'd file.

NOTE: This feature is defaulted to an "on" state.  To get back the old
behavior, you may disable this feature for your application.  This is
only to help you adjust to this change and will go away in a later
version.  Here's how you can get the old behavior:

```dart
module.bind(ResourceResolverConfig, toValue:
	new ResourceResolverConfig.useRelativeUrls(false));
```

*Testing*:
- e2e transformer tests can now be done on the sample application found
  in the test_transformers folder
fix(WTF): add back traceDetectWTF call in application start

Accidentally removed in previous commit.
chore(travis): custom merge pubspec.lock for g3v1x rebases

pubspec.lock changes will never really apply cleanly to g3v1x.  What we
wnat to capture, is whether Travis tests will pass if we apply the
pubspec.yaml changes to the g3v1x branch and then regenerate the
pubspec.lock file.  This commit inserts a custom merge driver for git to
ignore changes to the pubspec.lock file during merging to achieve this.
chore(travis): (fix) custom merge pubspec.lock for g3v1x rebases

Use the current version and not the ancestor version.  This means that
the merge driver has nothing to do except exist.
chore(travis): fail jobs that have a mismatched pubspec.lock

We expect that, for a clean checkout, running "pub get" will not update
the pubspec.lock file.  Any such updates should have been made along
with the corresponding change to pubspec.yaml or must be part of the
commit being tested.  Otherwise, that specific job should fail so the
author can resubmit with the updated pubspec.lock file.
chore(scripts): minor cleanup
docs(scripts): notes on karma sharding
chore(specs): minor style change
refactor(DirectiveInjector): better var names and comments
feat(scope): component is the new context

BREAKING CHANGE:

Scope context is set to the component instance that trigged the creation
of the scope (previously it was of a PrototypeMap.)

Repercussions:
1) You can not inject a scope in a component or in the root context any
more.

As the Scope context is set to the Component instance, the scope could
not be injected any more. Components should implements the "ScopeAware"
interface and declare a "scope" setter in order to get a reference to
the scope.

before:

     @Component(...)
     class MyComponent {
       Watch watch;
       Scope scope;

       MyComponent(Dependency myDep, Scope scope) {
          watch = scope.rootScope.watch("expression", (v, p) => ...);
       }
     }

after:

     @Component(...)
     class MyComponent implements ScopeAware {
       Watch watch;

       MyComponent(Dependency myDep) {
         // It is an error to add a Scope argument to the
         // ctor and will result in a DI circular dependency error
         // The scope is never accessible in the class constructor
       }

       void set scope(Scope scope) {
          // This setter gets called to initialize the scope
          watch = scope.watch("expression", (v, p) => ...);
       }
     }

or:

     @Component(...)
     class MyComponent implements ScopeAware {
       Scope scope;

       MyComponent(Dependency myDep) {
         // It is an error to add a Scope argument to the
         // ctor and will result in a DI circular dependency error
         // The scope is never accessible in the class constructor
       }
     }

2) The parent component to an NgForm must have a "$name" field to store
   the form instance.

closes #919
closes #917