MULE-5276: processing.time.monitor thread leak

_Extracting DefaultProcessingTimeWatcher from ProcessingTime
_Moving processing.time.monitor from server scope to app scope. This avoids the leak as the thread is stopped as part of the muleContext's stop phase. Side effect is that now there is a thread per application and is active since the app start when before was started on the first request.

NOTE: all the processing time thing looks like a hack to me as depends on GC to be invoked. This also causes that is not possible to write a reliable test for this change.
(cherry-picked from bc7c248)
(cherry-picked from 6d89540)
(cherry-picked from 99abc0a)