Shell autocompletion

Added basic auto completion for shell that can recognize files and programs. Tapping tab key twice will print all the possibilities
Ah, all right then. I'll clean this up a little, there are some things that seem odd to me (e.g. the use of `after` in `tab()` which isn't defined anywhere).

I'll also try to adapt it to take into account the cursor position (e.g. if the text is `one[] two`, with `[]` being the cursor, it tries to complete `one`, not `two`).