`docSetting` has been updated to do both Scaladoc and Javadoc. In
Scala/Java hybrid projects, the output docs are rebased to `scala`
or `java` sub-directory accordingly. But for pure scala or pure java
projects the subdirectories aren't added to becompliant with user
expectation as much as possible. We do hybrid mode iff both *.scala
and *.java files exist; other doc resources (package.html, *.jpg etc.)
don't influence the decision.
- JavacLogger.msgs uses ListBuffer for constant time append
- Synchronized access to JavacLogger.msgs since appends comes from multiple
threads
- JavacLogger.info uses Level.Info instead of Level.Debug
- Wrapped call to javac in allCatch to guarantee logger being flushed