TODO: At least one step could be optimized, currently the plugin will do two
scans of all the source code if the compiler has to have the entire set of
sources.
Run a scanner thread on the given list of files and directories, calling
stop/start on the given list of LifeCycle objects if any of the watched
files change.