major refactor, map_env subclasses now only need to define what a hidden cell is to be replaced with
this makes implementing cleanup much easier
also, pulled some common methods into map_env
fixed a bug where sequences of conflicts between agents could cause an error(i.e. agent 0 at 2, 3 and agent 1 at 4, 3 both want to move to 3,3 while agent 2 wants to move to 2,3. If agent 0 succeeded at its move, agent 2 would still be blocked).