reduces Java AST optimization time by bailing out when the rate of change slows to a crawl (only applies on optimization levels less than 9)

Change-Id: Iabf844d6a02f694e8d14103377f74f46e4e01915
Review-Link: https://gwt-review.googlesource.com/#/c/2580/

Review by: rluble@google.com
documents and tests the fact that the ArgProcessor allows duplicate args and honors the last one

Review at http://gwt-code-reviews.appspot.com/1901803
Fixes a missing flow in DataflowOptimizer that might cause incorrect code.

The DataflowOptimizer was building an incorrect control flow graph in the case
that a catch block ended in a throw (in all paths) and a finally block was
also present. In this case the graph would be missing the flow from the end
of the catch block to the finally block.

An example snippet that would be optimized incorrectly is

Object o = null;
try {
if (b) throw new Exception();
k++;
} catch (Exception e) {
o = e;
throw e;
} finally {
if (o == null) {
j++;
}
}

where the optimizer would assume that o is always null at the finally block
and thus transform the code into:

Object o = null;
try {
if (b) throw new Exception();
k++;
} catch (Exception e) {
o = e;
throw e;
} finally {
j++;
}

Fixes issue 8115.

Change-Id: I608bd25157eb0c76ac771697ca70756751c10750
Review-Link: https://gwt-review.googlesource.com/#/c/2600/
Set headers to prevent nocache.js from being cached by the browser.

Review by: skybrian@google.com