Added root directory, writing and reading of superblock from disk, partially implmented stat(), mkdir(), implemented pwd() (optional), refined structures, added several utilities like ErrorInode and dir_traverse, fleshed out shell to handle input better (including bad input), put comments everywhere to explain my thinking