GetFeatureInfo refactor, making it more object oriented, and extensible