GenericMonitoringTool: dynamically choose correct base class
GenericMonitoringTool class to a function to return the
correct configurable base class. This is required to support mixed old
and new-style job options.
Also remove the "feature/hack" to always create a new configurable
instance. That was likely only needed because of a bug in the
ConfigurableService class fixed in !48419 (merged).
Relates to ATR-24495.
Also remove some old Py2 backwards compatibility code.