Since you've split `strndup()` and `md5()` into their own files (each with separate licenses), shouldn't we do the same here (e.g. `is_numeric_array.c/h`) to be forward thinking?  Would it make sense to lump all of these three files into a top-level `3rdparty` directory?