The commit has interdependent changes for:
- [LOG4J2-634] ThrowableProxy ctor throws an exception when using suppressed exceptions.
- [LOG4J2-584] TCP and UDP socket servers should be able to handle JSON log events
- [LOG4J2-583] TCP and UDP socket servers should be able to handle XML log events
General:
- The Jackson code is 100% non-intrusive to the API and Core types. Jackson mix-ins are used for all IO specifications.
Details for log4j-api:
- Log4jMarker is public so it can be accessed Jackson XML and JSON IO code.
Details for log4j-core:
- The POM now depends on the JSON and XML databindings. Note that the runtime only needs Jackson if the JSON or XML layout or listeners are used.
- The class StackTracePackageElement has been renamed ExtendedStackTraceElement and tracks the StackTraceElement it conceptually extends. StackTraceElement is a final JRE class so we use composition. This allows (de)serialization to deal with the extended stack trace in a more OO and simple manner.
- The ThrowableProxy has been reworked to (de)serialize easly. It now tracks the suppressed exceptions of its Throwable.
- The XML and JSON layouts also use the same Jackson XML/JSON IO specifications. Both sides of the IO are in sync! 
- There are unit tests of course.
- org.apache.logging.log4j.core.LogEventListener.log(LogEvent) is now public.


git-svn-id: https://svn.apache.org/repos/asf/logging/log4j/log4j2/trunk@1594294 13f79535-47bb-0310-9956-ffa450edef68
Refactor String utils in one place.

git-svn-id: https://svn.apache.org/repos/asf/logging/log4j/log4j2/trunk@1594307 13f79535-47bb-0310-9956-ffa450edef68
Refactor String utils in one place.

git-svn-id: https://svn.apache.org/repos/asf/logging/log4j/log4j2/trunk@1594308 13f79535-47bb-0310-9956-ffa450edef68