*Added support for generic typing in patterns
*PatternConverters now follow the Abstract Factory Pattern

I was looking through the code to see how to add a new pattern (as I saw that there was no way to create a unix timestamp of when the LoggerEvent was created, even though there's getTimestamp method) and I noticed how the code was written for pre-1.5.  I decided to upgrade it in the interest of readability and good form.  Now PatternParser supports generics.  

I also changed the way it initiates PatternConverters.  I made a new interface called ConverterFactory to create instancs of PatternConverters.  It contains a getInstance method (like the newInstance method).  This method is called in the createConverter method to get an instance of the PatternConverter.  I stuck all of the factories for converters inside their respective classes as static nested classes under the name of Factory.  

One of my other goals was to make the ruleset specifiable from the config file.  Unfortunately, I realized that the DOMConfigurator and PropertyConfigurator used different methods to configure the logging api.  I think that I could redo them so that they both called methods on a single unified configurator, but that's not in the scope of this patch.  

The patch was created with the command:
diff -ur ~/projects/log4j/org/apache/log4j/pattern/ ~/projects/log4j-current/trunk/src/main/java/org/apache/log4j/pattern/
           ^ My modified source dir                   ^ Checked out from svn on Mar 3, 12

AUTHOR
Sean Anderson
