Allow koans files to be submitted with the Submit program

To address issue #65, I added the ability to submit all files in a directory using the `Submit` program and I allowed submitted files to reside in a directory names `beginner`, `intermediate`, and `advanced`.  Along the way, I refactored a bunch of code to make it more readable and easier to extend.