Change CFileHandler::ifs from std::ifstream* to std::ifstream

This removes the unnecessary dynamic allocation, and also introduces CFileHandler::Open() for reopening it. This fixes a potential bug which might happen if CFileHandlers were able to simply be assigned to one another, as that might double-delete CFileHandler::ifs.