Some rethinking of the FriendlyMines infrastructure

The changes here are designed to make the friendly mines system more
stable, generic and maintainable, and introduce some architecture into a
system that had grown organically.

It does a number of things, including:
  * make sure messages passed over the DWR boundary are typed
  * Provide a proper API for extensions (also well typed).
  * Removed many hard coded dependencies (class names, bio jargon).
  * Use OO inversion of control to limit responsibilities (for
    example, the Mine objects are now responsible for running
    their own queries, which they do differently depending on whether
    they are local or remote - this is instead of an outside runner
    that used many if statements; another example is moving caching up
    to the appropriate, ie outer, layer).
  * Tidied up the JS code so that it is more likely to be understood and
    maintained in the future.
Merge branch 'beta' into issue-772
Checkstyled and tested with an instance of flymine.
Don't marshal errors in production
Broke and fixed rat diseases
update to use JUnit in intermine-model instead of intermine-objectstore-test
Make this project depend on model-test
Tests for FriendlyMinesManager
Checkstyle
Handle errors from DWR.
Make sure we always remove the loading state.
strict violation
Merge pull request #840 from intermine/issue-772

 friendly mines infrastructure