Nimterop should make it easier to find out order of importing headers
Given a directory of headers, it isn't always possible to use `recurse` and call it a day. For example, in openssl, there's no single top level header that can be imported.

Need a way to identify the order in which headers should be best imported so that symbols are loaded in the right order.

This code helps identify it but need to see how it can be integrated and usable within nimterop.

```nim
import os, re, strutils

let
  base = "/usr/include/openssl"

var res: seq[string] = @[]

proc process(file: string, parent = "", depth = "") =
  let
    file = file.extractFilename()
  if not fileExists(base / file):
    return

  #echo depth & "Processing " & file

  let
    data = readFile(base / file)
  for inc in data.findAll(re"#[ ]*include[ ]?<(.*?)>"):
    var
      inc = inc.replace(re"#[ ]*include[ ]?<", "")[0 .. ^2]
    if "openssl" in inc:
      inc = inc[8 .. ^1]

      if inc == parent:
        continue

      if inc notin res:
        process(inc, file, depth & "  ")

  if file notin res:
    if parent.len == 0:
      #echo depth & "Adding " & file
      res.add file
    else:
      let idx = res.find(parent)
      if idx != -1:
        #echo depth & "Adding dep " & file
        res.insert(file, idx)
      else:
        #echo depth & "Appending dep " & file
        res.add file

for file in walkFiles(base / "*.h"):
  process(file)

for i in res:
  echo """
when fileExists(basePath/"$1"):
  cImport(basePath/"$1", dynlib="cryptoPath")
""" % i
```

cc @dizzyliam