Add a filesystem abstraction layer (AbstractFS) to smooth over the
differences between different implementations and their fs
mechanisms. If I add more, I might spin it off into its own project, but
for now, just the functions that I need to use.
documentation update to help explain the abstraction