refactor flume jmx collector. monitor versions from different threads

@mustpax 

Use main thread to do version polling. Monitor each version in a separate thread so they can make independent progress.
join is for threads, which is not needed since we quitting anyway. we always kill child procs and wait for them