util: Remove hFileExists() and use FB's fileexists() instead

hFileExists() was based on dir() which seems to return bogus results when
given a path like ../foo/file.ext. So now we're using fileexists() which
simply checks whether the file can be opened for reading.
hAstMerge(): Remove unused variable
tests: Add test case which is given an Extern block despite -filterout
Don't add Extern blocks for declarations that will be filtered out