Makes LibraryBuilder path string encoding more forgiving.

When compiling actual applications Generator execution creates some
synthetic resources with an unusual path character (":"). Library
serialization was guarding against usage of this character, but it
has been changed to allow it. (This was originally correct but was
broken during out-of-context cleanup/review of the builder code).

Added a TODO to unify the Compiler on some fast and consistent
serialization library (probably protobuf) rather than the current
mixture of slow Java serialization, some protobuf, and custom
serialization.

Change-Id: Id4ef7477f3b81cf6a8b7c5eea6914a150d396fcf
Review-Link: https://gwt-review.googlesource.com/#/c/5246/
Fixes namer output for package-info classes.

JDT compilation of package-info.java classes results in the
creation of AST name nodes containing "package-info".
"-" is an illegal character in function names in output
javascript. So the javascript namers have been updated to
fix it.

Previously this was not a problem because this "-" character
was only in package-info classes and the Pruner was
removing those classes. But separate compilation does not
run the pruner, thus revealing this issue.

Change-Id: Ia322dadd36f2e117a3024cf3ed0f2cee8bfcb873
Adds a StatementRanges combining utility.

The Link system uses a StatementRanges object to know
how to and how much Javascript to write to disk. When writing
the combined Javascript from previously compiled libraries (as
part of separate compilation) it becomes necessary to combine
the StatementRanges for those libraries. Thus this change.

We want to enable separate compilation because it will be
faster than monolithic compilation.

Change-Id: I33879e213097c6335ea6c2369ad73dc274c6c8ea
Adds separate compilation flags and options.

Unlike the normal compiler entry point the separate compiler
entry point needs to be informed of precompiled input
libraries, the destination of its output library and whether
to perform linking (as linking is only performed in the last
separate compilation at the top of a compile tree).

So these options and args make it possible to drive the
separate compiler, which is deseriable since separate
compilation is faster.

Change-Id: I645f37d42b14cdecb3fd62e56cc395639a4e36bf
Review-Link: https://gwt-review.googlesource.com/#/c/5247/
Changes to make subclassing easy.

Change-Id: I0c0604b70f72403f758a482b470c6b09307285c0
Review-Link: https://gwt-review.googlesource.com/#/c/5171/
Fixes an Oracle config property lookup bug.

Out of context cleanup/review of DynamicPropertyOracle introduced a
bug by confusing com.google.gwt.dev.cfg.ConfigurationProperty and
com.google.gwt.core.ext.ConfigurationProperty.

Fixed the bug, added a regression test and added a TODO to get rid
of this duplicate class name confusion.

Change-Id: I0f7f4770ee7103a8358163e6cd986be6a04bd679
Adds RuntimePropertyRegistry for runtime rebinding.

The RuntimePropertyRegistry is necessary because runtime rebinding
depends on the execution of condition checks embedded in rebind rules,
and these condition checks depend on property value lookups which it
provides.

Runtime rebinding is needed for separate compilation since static
compile time rebinding is only possible when in possession of complete
global knowledge and thus can only be done in monolithic compiles.

Separate compilation is wanted because it makes things faster by
reducing the amount of work necessary when only a couple of files
have changed and also by making it possible to run some work in
parallel.

Change-Id: I5f688e679a1dab2fa95f6a451a779b7201aee93d
Deprecates AsyncProxy

Deprecated AsyncProxy due to lack of usage and very limited use cases.
Will be made available as third-party library.

Change-Id: I8295f44e00cf9c26b0fef024dbae93f7e1c9d83a
Merge remote-tracking branch 'upstream/master'