Implemented the SaveDataCheck archive

Reduced duplicated code in the RomFS archive.

There are some problems with the current way we handle archives, I believe they are outside the scope of this PR, however I added a few comments in there to keep it in mind:

We should not be overwriting raw_data everytime the Archive_SaveDataCheck::Open function is called, but until we use factory classes to create the archives at runtime instead of creating them beforehand and allow multiple archives of the same type to be open at the same time without clobbering each other, we won't be able to maintain the state of each archive, hence we overwrite it every time it's needed. There are a number of problems with this, for example opening a file in SaveDataCheck with path A, then opening SaveDataCheck again with a path B, will corrupt the previously open file.