Add logging using SLF4J

In order to avoid a dependency on SLF4J being created, the `Logger`
class provides a logging interface for OG-Maths. It checks to see
if SLF4J is available - if it is, then new instances of it use
SLF4J. Otherwise, we fall back to a simple implementation that
prints all log messages to stderr.

Testing is added, but is limited to instantiating each of the
logging classes and attempting to use each of their methods.

An extra test is added that runs with all the JARs on the
classpath, so that NativeLibrariesSelfTest gets run both with and
without SLF4J available. Some instances of NativeLibrariesSelfTest
will still fail if we accidentally introduce a hard dependency on
SLF4J.

Calls to `println` are generally replaced with calls to the `Logger`.
This makes the library quiet from the Java side. Some `println`
calls remain, in places where the user would expect to see output
- for example, in the fuzzer and NativeLibrariesSelfTest.

Java coverage: 81% (unchanged)
Native coverage unchanged.
It's what we have in various build systems.