LPS-47673 Introduce inner classes for UserScreenNameException for each cause

The design goals have been:
1) Centralize the generation of messages within the class
2) Allow for causes to be catched independently
3) Each cause should have all the information necessary to diagnose the problem available through getters.
LPS-47673 Without the "new String", it will actually do a toString on the char[] which will give us a reference to the Object, that's probably not what we want
LPS-47673 add line breaks
LPS-47673 Match our other javadoc syntax
LPS-47673 Simplify
LPS-47673 Tiny wordsmithing for consistency
LPS-47673 Sort by constructor order
LPS-47673 I think you meant "disabled"
LPS-47673 We've been quoting properties so far
LPS-47865 Caught error in which portletId for non-existing portlet was
being used. Traced back to original creation of code that used this faulty
portletId - it never existed but was caught by a shortcut. Removed extra
portletId as a result.
LPS-47865 Fixed threadLocal leakage
LPS-47865 Created unicode property rather than give random string, created
RanodmTestUtil function to do this cleanly
LPS-47865 Use CaptureAppender in order to intercept specific logging
event to prevent unnecessary failures.
LPS-47865 Make test use local service util to prevent Hibernate exceptions
LPS-47865 Test results failed due to trash entries having long enough
lifespans to pollute database. Fixed max age of trash kept in database to
fix.
LPS-47865 SF
LPS-47865 Fixed all errors exposed by log assertions, enabled option as
default. Future test failures caused by log assertions will be considered
as test failures.