Don't use fgets() when we might get EAGAIN

Our tor_fgets() code, added in #20988 (moved), tries to make fgets() behave as we expect with nonblocking sockets. But really, fgets() is not such a great choice for nonblocking sockets in the first place! Let's use direct fd-level IO for those instead.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information