Implementation of simulated GWT.jsni method

Some motivational examples (requiring TypeTightener bugs fixed)

Added @JsProperty(indexed=true) and examples

Added sample base Js classes.

Renamed GWT.jsni -> Js.js to allow terse writing, e.g

Document doc = js("$doc");

Added Iterable<T> adapter for JsArrayLike<T> to prepare for upcoing
magicification of JsArrayLike left indexed property implementation
for now so tests keep passing.

Implemented JsArrayLike magic.

Added @IterateAsArray

Added Js.array and Js.map magic

Change-Id: Ib037d9d90de80b314eddd76ee2b2b9a46ecdb1fb
foo

Change-Id: I249ced8a4be5f1a7fa589bb72c36e21994c4c867
JSO dispatch in JSNI was only sometimes blocked, fixed.

The enforcement of blocking JSO dispatch in JSNI depended on a 
datastructure that was not guarranteed to yet be fully populated.

Moved the enforcement to a later compiler stage.

Change-Id: I5867ef061a36095e1393e06e289d6cc2e1e1e692
Review-Link: https://gwt-review.googlesource.com/#/c/10230/
Update Checkstyle to  version 6.0.

Version 6.0 supports Java 8 syntax.

Change-Id: I13a5f89390be8db5a4d6ea5d6a78ff8239aaa5d2
Allow overriding for DateTimePatternGenerator in CustomDateTimeFormatGenerator.

Change-Id: I3b64b9bd324d4ad9934a7a176e01b76b4891fa12
Implement a "dependent optimizations" framework.

- This framework is used for speeding up optimizations by running
  optimizers on just modified fields and methods.

- Use the framework to speedup MethodInliner (both inner loop and
  outer loop).

- Add unit tests for MethodInliner.

Change-Id: Ieb38b77294a2004ee03047f6f6aac41164395329
Adds option to disable file change watching.

Java 7 file change watching may not be trustworthy with some file 
systems, provide an escape hatch.

Change-Id: Ia25326ee2c90677e49d35e5f3b9e271b6487630f
Introduces MinimalRebuildCache management.

Adds a memory and disk cache management class for MinimalRebuildCache 
instances.

Change-Id: I7d3bce27b22d150991ca009f454015a3d3d75a8a
Review-Link: https://gwt-review.googlesource.com/#/c/10261/
Java8 lambda/method reference language support

Includes James Nelson's upstream

Fix lambdas to appear as the expected type

Previous implementation created lambdas as the type of the
single abstract method being implemented, rather than expected
type in method signature.  To fix this, we correctly type the
anonymous type (and return the correct class from .getClass())

Add java8 emulation for common functional interfaces

Change-Id: I0b8c941f99a2e6869c5206bbbde0450ca6a80f64
Remove JRE incompatible APIs from emul.

This methods was not initially private because SpecializedMethod
wasn't correctly handling private methods.

Change-Id: I5b8bee1837edef6ee91f5e0f90f155cdc236957f
Avoid instrumenting methods in c.g.g.lang.Exceptions.

Calls to methods in c.g.g.lang.Exceptions are inserted by the
compiler to handle exceptions, hence neither their bodies nor
their calls should be instrumented.

Change-Id: Ie0beb6a0c259af780eae90d6de80105cc44935ea
Fixes failing tests missed in the Java8 patch.

Change-Id: I13fc11fbe0958f5d2ca114bd36625f6aa2e8a648
Restores stack emulation to inlined code.

This reverts commits 3690953f468bf6f609f7a07036015ad393912d0a and
db8f1ee2e98921349c2cb60888231b3466723159.

Change-Id: Iddf2ac250337622f091b99a0c8840d28e2ad19f0
Small refactoring to avoid a latent bug.

JNewInstance mantained a pointer to the enclosing class of the method
wheren the new appeared only to marginally improve dead code elimination.

The problem was that most of the code did not know aobut this pointer and
was not always updated correctly (e.g. by UnifyAST).

Change-Id: If361794afeda8ba6c630c7ed26ea71fb33af35c1
Changes OutputFileSet to overwrite on equal timestamps.

Previously OutputFileSetOnDirectory took special care to not overwrite 
a file in the output directory if it had the same timestamp as the 
current artifact being written. For a long time this had no effect
since Link.java deleted al output directory contents anyway and DevMode
was  not using OutputFileSets to perform it's writes.

But somewhat recently DevMode was changed to use 
OutputFileSetOnDirectory and it resulted in a subtle change in behavior
where generated files from 1 compile would not be overwritten by the 
samely named (but differently contented) generated file on a subsequent
compile.

As a result running a prod mode test followed by a dev mode test would 
fail as the dev mode test tried to reuse the incompatible prod mode
test Foo.nocache.js file.

Change-Id: I0916ab7933f9dfcb36b361f2e21657fac8174d67
Review-Link: https://gwt-review.googlesource.com/#/c/10311/
Java8 Defender Methods

Does not implement dispatch for JsInterop/@JsType interfaces
yet. That will come in a followon patch.

1. Promote default interface methods to static methods
2. For each type which has a super-type containing a default method,
determine if it reaches this type with no concrete implementors.
3. Implement by generating a method with the signature of the default
method delegating to the static version on the interface.

interface Foo {
  default int m() { return 42; }
}

class FooImpl implements Foo {}

becomes

interface Foo {
  int m();
  static int m(Foo thi$static) { return 42; }
}

class FooImpl implements Foo {
  public int m() { return Foo.m(this); }
}

Change-Id: I1c92e146b18785814ed2fc6586b0294862ac5968
Merge branch 'gwtdotjsni' into gwt3prototype

Change-Id: Ibbde73e42940a63a24de4eea93f01ccf945dc4bb