Fix return type assertions & arrow functions

Fixes #1443
Allow undefined/null as source for Object.assign

Fixes #1448
Add parsing support for type generics

Aka TypeArguments. The syntax is taken from the TypeScript spec
and here are some examples:

Array<number>
Map<number, boolean>
a.b<c, d.e, f.g.h>
Correct the relative path for traceur-loaded nodejs modules.

Using Module._compile() causes evaled code to require() relative to the
caller of _compile(). We want the require() to be relative to the file containing
the es6 code we transcoded.

Here we include a file-local function `require()` during transcoding of modules.
The local require() calls a runtime function with the module name and the required path.
The runtime function resolves the required path iff its relative.

Review URL: https://api.github.com/repos/google/traceur-compiler/issues/1434

Closes #1434.
Add missing file from previous commit.

TBR=@arv

Review URL: https://api.github.com/repos/google/traceur-compiler/issues/1454

Closes #1454.
Make types work in placeholder parser

This requires the parser to take an option object.
Type asserts: Fix issues with TypeName and asserts

The assert functions we used for testing was wrong. It did not
handle number vs Number.

We also dropped the `moduleName` of the TypeName on the floor.
Type asserts: Add support for symbol primitive
Generic type assertions

This adds basic support for generics for the type assertions pass.
Right now the responsibility for validating the type is part of
the test. All Traceur does is to to transform

T<x, y>

into

$traceurRuntime.genericType(T, x, y)

which now constructs a new $traceurRuntime.GenericType which the
testing assers can inspect to determine how to validate the value.
Parsing support for TypeParameters and TypeParameter
Parsing support for FunctionType
Parsing support for ConstructorType
Parse ArrayType
Parse ObjectType