Made ParametersDefinerForTP thread-safe

The virtual initEvent method of ParametersDefinerForTP was const and
allowed inheriting classes to modify the state of the object. This function
has been changed to non-const and a const clone method was added. Now any
code which called initEvent must first clone the object and use their own
copy.