Many updates to the filesystem and the terminal

I updated tab completion for the terminal.
I also made a huge change on how files work. They are much more like actual files now.

I am going to try to create a filesystem in memory to allow an external terminal to be used instead. This way I wont have to simulate gnu coreutils.