Broke up into more methods, revamped permutation, removed naive map optimization

A couple of changes here.

First off, I was naive in trying to use a hash map to record the indexes of a string for faster lookup. The truth is that the optimization was almost unnoticeable for a string of such small lengths. We'd have to only make such an optimization if we had really long strings, and even then, there's even better algorithms out there for this rather than using a simple hash map.

Also, sorry but I had to ditch the permutation code you made. While it is clean and recursive, I had a feeling that (just like the printLevel method from our last assignment) we were supposed to make a non-recursive version that used an algorithm of some sort to run faster. The algorithm I found was this one: http://en.wikipedia.org/wiki/Permutation#Generation_in_lexicographic_order. Notice that I'm using a char array here because it makes it easier to implement by using an array then with just plain strings. I say *we memorize both* for the test so that we're not caught off guard either way.

Notice the class can now be initialized. This was done to just make the separation of code better and have the ability to choose a filename, and turn on runtime reporting for each test case. Yes, there are some uneeded constructors there, but I wrote them just because of OCD or something.

Change line 24 for runtime reporting.