Super Dev Mode: add user-defined tags to JobEvent

Tags are search terms that can be added by startup code
that embeds the code server. They're restricted to
short strings that will work well in a search query.
For example, we could use tags to mark compiles
launched by GWTTestCase, when we add that.

Also, automatically add tags to track whether incremental
compiles and precompiles are turned on or off.

Rationale for using tags to track incremental compiles:

CompileStrategy doesn't quite do this because the first compile
is a "full" compile and we may add an option to trigger a full
compile manually. We shouldn't change this because it will
mess up the average times for incremental compiles.

JobEvent.getArguments() could be made to work, but tags seem
a bit cleaner, since they won't change if we rename flags or
add synonyms. We can also drop a tag without changing the
JobEvent API, so it's better for temporary terms used to track
migrations.

Change-Id: I2c0661105f697ec8e628e733b868a590d35f4c2a
3 files changed