use factory pattern for JetProperties
This is an easier-to-use design vs. the previous approach (template metaprogramming w/ non-type template parameters): more lines of code, but simpler to add a new jet property, and takes advantage of existing CMSSW framework features.