Buffer output
We do not need a main close operation
[LOGTOOL-77] Use the writer from the JavaFileObject as it doesn't write one byte at a time.

Found the implementation of javax.tools.JavaFileObject#openOutputStream returns com.sun.tools.javac.processing.JavacFiler$FilerOutputStream which extends FilterOutputStream. This writes a single byte at a time resulting in poor performance.
[LOGTOOL-78] Use better logic to determine the correct exception constructor to use. Note a slight change in behaviour requiring a string parameter for the message if @Param is used on any parameters.
[LOGTOOL-80] Use the canonical name for arrays and inner classes when directly referencing a class. The issue was introduced with the LOGTOOL-51 fix. Also added a separate maven module to test with an older version of logging for regressions.
[LOGTOOL-82] Generate source files in the same order the interface defines the methods.