Adds ruby-prof to Gemfile
Profiles performance issues
Fixes performance bottleneck in solve_it

One optimization I had the intention of implementing from the onset was preventing unnecessary exploration of useless states (for example, those previously visited or those that undo what was done previously). I was using a `priors` hash to protect for this by adding a `Grid` object as a unique key as soon as it had been explored. The problem with this is that `Grid` objects with identical `grid`s still had unique `object_id`s, so when added to the `priors` hash, they counted as unique states rendering the intended function of the `priors` hash useless. Adding the `Grid` objects' `grid`s as keys to `priors` fixes this, and now `solve_it` solves any solvable 8 puzzle in seconds.