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