Use fts functions for scanning directories

The BSD functions `fts_open()` and `fts_read()` are a nice alternative to ftw/ntfw and manual directory reading. This commit replaces existing `readdir()` and `nftw()` usage to get:
- applying CIPSO rules in one shot, just like regular rules
  - [**jsakkine:** Regular rules are not yet applied in one shot. #53 has not yet been merged. I would merge that first and even that after profiling. You can propose something similar for CIPSO but is there large CIPSO data sets even used?] 
- sort input files alphabetically to load them in a defined order (`readdir()` order is file system dependant)
  - [**jsakkine:** This not a benefit.]
- loading rules works on file systems not setting d_type on `readdir()` (fix 233dc30 regression)
  - [**jsakkine:** I would first consider fixing this regression.]
- better performance compared to `nftw()` due to fewer calls to `stat()` internally
   - [**jsakkine:** As far as I know `nftw()` is not used anymore to load access rules, only CIPSO uses it. I'm willing to take a patch to fix that.]
- shorter code due to unified handling of load from file and from directory
  - [**jsakkine:** I'm not a fan of callbacks or unnecessary function pointers. At least I would propose that part in a separate patch.]