Only run language specified tests

Add a template to generate a complete list of tests for C/C++, and use it to generate the list of binaries to run tests for.
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index 0826dfc..71c68d7 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -41,12 +41,17 @@
 
 class CLanguage(object):
 
-  def __init__(self, make_target):
+  def __init__(self, make_target, test_lang):
     self.allow_hashing = True
     self.make_target = make_target
+    with open('tools/run_tests/tests.json') as f:
+      js = json.loads(f.read())
+      self.binaries = [tgt['name'] 
+                       for tgt in js 
+                       if tgt['language'] == test_lang]
 
   def test_binaries(self, config):
-    return glob.glob('bins/%s/*_test' % config)
+    return ['bins/%s/%s' % (config, binary) for binary in self.binaries]
 
   def make_targets(self):
     return ['buildtests_%s' % self.make_target]
@@ -85,8 +90,8 @@
 
 _DEFAULT = ['dbg', 'opt']
 _LANGUAGES = {
-    'c++': CLanguage('cxx'),
-    'c': CLanguage('c'),
+    'c++': CLanguage('cxx', 'c++'),
+    'c': CLanguage('c', 'c'),
     'php': PhpLanguage()
 }