Changed the array of VirtualFile pointers to a map of string to VirtualFile

|SOURCE|
[Common/System/FileContainer]
* ExtractFiles accepts a map of strings to VirtualFiles instead of an array of
  VirtualFiles
* Added GetFileHandle which returns the real file handle
[Common/System/FileSystem]
* Changed the File array to a File mapping of strings to VirtualFile pointers
* OpenFile checks the file map to check if the files in the container already
  exist by using the file names in the container, if this succeeds, the new map
  is appended to the existing map
[Common/System/VirtualFile]
* Removed the offset and size parameters from the constructor, these will be
  determined with the Open member function