Utility function for finding location of file...

... in a list of directories.
Return module path from parse_module_name.
Return macros and launch file from interpret_command.
Return path if path not understood by parse_module_name.

i.e. return: (path, '', '', '')
Return correct relative path from parse_module_name.

Now correct for modules in work as well as prod.
Update convert_conf.py to work with new interpret_command()
Rewrite of convert_launcher.py to restructure output.

The output now creates a filesystem which mirrors /dls_sw.
This required a change in how the converter handles paths.

This is still a work in progress and needs tidying.
Various tidying and minor restructuring.
Check for argument to CSS run script.

Add explanatory comment.
Corrections to spoof xmessage script.
Improve CSS run script.

 * Make it executable by default
 * Put different shared links on different lines for readability.
Assume argument with no extension is .edl file.
Continue after any exception while converting.
Only convert dirs that have not already been converted.
Ignore all opi file directories.
Some more symbol files.
Failing test for parse_module_name.

This test may not be possible to satisfy.
Update store_symbol unit tests to use sets.
Add unit tests for file depth calculations.
More accurate, but inelegant, handling of path depths.