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.
more config for humanmine. Refs #864
Make sure we always remove the loading state.
more config for humanmine
more config for humanmine
strict violation
remove some flymine code
remove attribute tile, it's automatically included. Refs #864
Merge pull request #840 from intermine/issue-772

 friendly mines infrastructure
Merge branch 'beta' into jwt-task

Conflicts:
	intermine/web/main/src/org/intermine/web/context/InterMineContext.java
	intermine/web/test/.classpath