Make OpenDirectory fail if the directory doesn't exist

This is in line with what the hardware itself does.

It does this by splitting the initial directory opening into `Directory.Open()`, which will return false if a stat fails.
Then, `Archive::OpenDirectory` will return `nullptr`, and archive.cpp will return an error code.

Fixes #221
It's used [here](https://github.com/citra-emu/citra/pull/260/files#diff-a6f18fcd3e3ed32ba8e4a46121d8678dR48) and contains all the contents of the directory.