adds let statement
fixes #54
closes #81
documents and reorganizes the compiler code