Uninformed Search Works!

So a class has been created to handle both DFS and BFS. You can toggle
between the types of searches by using the
UninformedSearch.UninformedSearchType enum (which needs to be its own
enum class, since the name is insanaly long).

Both searches work really fast :) This is because a Set has been used to
store the explored states. Note that to use a Set in Java for an Object,
that Object has to have its own .equals and .hashCode methods. I just
made a hash method for EightPuzzle and it is explained in the comments.