Fix tests broken due to non-deterministic execution order on JDK 7

There are a number of tests that make pretty strong assumptions about execution order, relying on
shared data set up in @BeforeClass that is mutated by other test methods.

There are a couple strategies taken to address this:

1) Update to JUnit 4.11 which introduces the @FixMethodOrder annotation and enforce test execution
   in order sorted on method name (and in some cases make sure the methods sort in lexographically-
   happy order)

2) Update the test methods to reset the state they are testing at the start of execution

Strategy #2 is better, but I didn't push that through all the failing cases
Use the appropriate findbugs dependency at compile time for annotations support.

Depending on the findbugs module pulls in a huge chain of nasty dependencies (asm, xerces, xalan, jaxen) which cause
much grief downstream.

We only need the findbugs annotations module as our compile time dependency for the findbugs exclusions