Count visited locations for all-locations-visited?

This is necessary because we are no longer going to backtrack. This
means that the path will never be empty. In our finished state, the path
will actually be full.
Move dumb-next-location next to where it is used
Use location instead of path to checked if solved
Adjust whitespace
Add next-paths for all paths from a location
Use path for location in reachable-neighbors
Remove unused random-reachable-neighbors
Use path for location in unvisited-neighbors
Add shuffle-next-paths for use in search-maze

We don't want to use a shuffled version in the tests, but we do want to
shuffle our next paths when we actually do the search.
Rename location to current-location
Use path for location in solved?
Rename path to current-path
Rename outer-walls to walls; it's not special
Re-write search maze with paths and current-path

This will allow us to easily switch between depth first search and
breadth first search.
Allow depth-first or breadth-first search
Don't calculate size in add-inner-walls

I know we hate passing size around, but we need it here and it doesn't
make sense to re-calculate when it's already available. This shaves
about 12 milliseconds off the generation and solve time.
Give current-path and remaining-paths a name
Use partial instead of anonymous function

cc @r00k
Rename dumb-next-path to deterministic-next-paths

cc @r00k
Rename next-paths to possible-paths

cc @r00k