Add a script to help CTest run clar suites in parallel

This script asks the clar runner for its suites and then creates a CTest
file so ctest knows about them. We can use this script together wtih
CTest's '-j' option to run multiple test suites in parallel.
diff --git a/script/ctest-jobs.py b/script/ctest-jobs.py
new file mode 100755
index 0000000..71b6711
--- /dev/null
+++ b/script/ctest-jobs.py
@@ -0,0 +1,42 @@
+#!/usr/bin/env python
+
+from __future__ import print_function, unicode_literals
+
+"""Take a clar executable and create a CTest file for each suite
+"""
+
+from os import path
+import subprocess
+
+def parse_suites(exe):
+    """Ask the clar executable 'exe' for its suites
+
+    Returns a list of suites
+    """
+    suites = subprocess.check_output([exe, '-l'])
+    return map(lambda s: s.split(' ')[1], # get the name from each line of output
+               filter(lambda s: s, # Remove any empty lines
+                      map(lambda s: s.strip(), # remove leading whitespace
+                          suites.split('\n')[3:]))) # skip first three which are info messages
+
+if __name__ == '__main__':
+    from argparse import ArgumentParser
+
+    parser = ArgumentParser(description="clar to CTest job creator")
+    parser.add_argument('clar', type=unicode, help="Clar runner")
+    parser.add_argument('testfile', type=unicode, help="Test file to write")
+
+    args = parser.parse_args()
+
+    if not path.isfile(args.clar):
+        print("fatal: clar runner not found", file=sys.stderr)
+        exit(1)
+
+    suites = parse_suites(args.clar)
+    print("Found {} suites".format(len(suites)))
+
+    with open(args.testfile, 'w') as f:
+        print("# File generated by ctest-jobs.py", file=f)
+        for suite in suites:
+            name = "{}-{}".format(args.clar, suite)
+            print("add_test({} \"{}\" \"-v\" \"-s{}\")".format(name, args.clar, suite), file=f)