Make generator consider dependencies recursively (#610)

Previously the generator would only look into the first level
of dependency files, thus some dependency message types were ignored
in a deep hierarchy.
diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py
index aabdddf..0899129 100755
--- a/generator/nanopb_generator.py
+++ b/generator/nanopb_generator.py
@@ -1988,10 +1988,15 @@
     '''
     f = parse_file(filename, fdesc, options)
 
-    # Provide dependencies if available
-    for dep in f.fdesc.dependency:
+    # Check the list of dependencies, and if they are available in other_files,
+    # add them to be considered for import resolving. Recursively add any files
+    # imported by the dependencies.
+    deps = list(f.fdesc.dependency)
+    while deps:
+        dep = deps.pop(0)
         if dep in other_files:
             f.add_dependency(other_files[dep])
+            deps += list(other_files[dep].fdesc.dependency)
 
     # Decide the file names
     noext = os.path.splitext(filename)[0]
diff --git a/tests/regression/issue_610/SConscript b/tests/regression/issue_610/SConscript
index 1c6e276..7adb6b8 100644
--- a/tests/regression/issue_610/SConscript
+++ b/tests/regression/issue_610/SConscript
@@ -28,3 +28,4 @@
 for f in all_files:
     env2.Object(f.replace('.proto', '.pb.c'))
 
+env2.Match(["nanopb_generator_bug/first.pb.h", "first.expected"])
diff --git a/tests/regression/issue_610/first.expected b/tests/regression/issue_610/first.expected
new file mode 100644
index 0000000..4343dfd
--- /dev/null
+++ b/tests/regression/issue_610/first.expected
@@ -0,0 +1,2 @@
+define First_size\s*4
+