[RFC] Implement `FileID` struct

`FileID` encapsulates `st_dev` and `st_ino`. It is a new abstraction used to check if two files are the same. `FileID`s are embedded inside other struts like `buf_t` or `ff_visited_T`, where a full `FileInfo` would be to big.

All uses of `stat.st_dev` and `stat.st_ino` outside of `src/os/` are replaced with `FileInfo`/`FileID`.
The only exception is `memline.c`, which needs the inode for the block0 used in swapfiles.

This continues #619.