Separation of file descriptor functionality into individual classes which can be 'mixed in' using CRTP.