Feature/resolver abstraction

Chuck, this does three things:

*  Turns the `LocationResolver` into an interface, and renames the old `LocationResolver` into `LuceneLocationResolver` which implements the `LocationResolver` interface.
*  Removes knowledge of how to construct the `LuceneLocationResolver` from the `GeoParser` class, allowing `GeoParser` to simply deal with interfaces of `LocationExtractor` and `LocationResolver`.  A new `GeoParserFactory` has static factory methods that did the construction `GeoParser` used to do (so it's just as simple, but more flexible).
*  Removes direct bindings to Log4J in favor of SLF4J.  This way, developers aren't forced to use Log4J, which will give us better options in the future for production/maintenance features.