GetFeatureInfo refactor, making it more object oriented, and extensible

To prepare the code for adding the new painting base feature info code, so that it can be coded as a clean plugin.