Rediseño de la generación de laberintos

Con este nuevo diseño hacemos que se separe la responsabilidad de los
algoritmos de generación de laberintos de lo que es común.

Además, los algoritmos se configuran antes de ejecutarse, que es lo lógico y
no como estaba antes, donde se generaba el laberinto y después se añadían
ciclos o lo que fuera y después se metería en el constructor del laberinto,
donde todo se invalidaría y no serviría de nada.