rewrote and improved argument parser

spaces can be escaped in commands now so this is possible: `mkdir hello\
world` to create a directory called "hello world", single quotes are
supported now as well.
Organized some code a bit as well.