CMS-4519 Make sure QueryFieldName is lowercased and used everywhere  Started to fix, but this will take some time

Started using IndexPath object instead of String, which handles the normalization of IndexPaths. Some more refactoring still to do to use IndexPath all the way to the bottom