Convert explicit state passing to Reader Monad

Having fun learning the conversion
Naive implementation for the large botclean

This doesn't calculate the most efficient path. I might need to
calculate the next N steps and choose. Like a SQL query planner