Remove generics

Remove the generic from Appender<T> and subsequently change all the places that
    pull this generic through the code base. This is mostly removal of places that try
    to be generic but are not.
    
    This also removes the need for a lot of casts, annotations and <?> generics.
    
    Also fix a large number of raw class usages where generic classes such
    as Map or Class are not used with generics. Explicitly do not touch
    the APIs we implement (log4j 1.2 etc.).