Don't initialize live listener without required log values

Parse the instrument definition XML looking for nodes named 'logfile'
that are children of nodes named 'parameter'.  Record the 'id' attribute
for these nodes.  Prior to executing the LoadInstrument algorithm,
verify that we've received values for each of logs.

Refs #6661
Don't let the live listener block the main thread indefinitely

Limit the amount of time the main thread will block inside extractData()
waiting for the live listener background thread to initialize.

Refs #6661
Ensure that the live listener background thread always exits

If the user canceles the live listener algorithm at just the right time,
it was possible for the background thread to be stuck in a loop waiting
for something from the foreground thread and thus the thread would never
exit.  This change adds a couple of checks to make sure the background
thread won't get stuck.

Refs #6661