[MAT-358] Add Logger.

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.
[MAT-358] Run NativeLibrariesSelfTest with slf4j

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.
[MAT-358] Replace appropriate printlns with 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.