Re-invent FS.VFS.Open()

Handle the path traversal and symbolic links in VFS.Open(). For each
path component, query the file type (directory, regular file, or
symbolic link) from the FS driver and act accordingly.
diff --git a/src/filo-fs-ext2.adb b/src/filo-fs-ext2.adb
index ec17fe4..1d074d4 100644
--- a/src/filo-fs-ext2.adb
+++ b/src/filo-fs-ext2.adb
@@ -736,7 +736,9 @@
    procedure Open
      (State       : in out T;
       File_Len    :    out File_Length;
-      File_Path   : in     String;
+      File_Type   :    out FS.File_Type;
+      File_Name   : in     String;
+      In_Root     : in     Boolean;
       Success     : out    Boolean)
    is
    begin