Make implicit narrowing compound assignments explicit.

Compound assignments to variables with type byte, char, short, or float hide
dangerous narrowing conversions.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=82265189
(1) Don't use a lock for seen exceptions field; should help speed a little (saves space in the non-error state)
(2) Track not only seen exceptions, but also the causal chain.

Good example of unnecessary logging from this is a CancellationException, which is wrapped in another CancellationException on list futures.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=82368457