Made maze generators first-class functions.

Before, maze generators were methods named "Generate" which were bound
to an empty struct bearing the name of the generation strategy. For
example, "RDivGenerator.Generate", with "RDivGenerator" being the name
of the struct.

Since the structs were only being used as a sort of namespace rather
than storing any implementation-specific state, I believe these
functions can be written simpler.

This commit replaces all empty generator structs and their corresponding
"Generate" methods with functions of a similar name. For example,
"RDivGenerator.Generate" becomes simply "RDivGenerator". The top-level
"Generate" calls this function directly.

This commit also introduces the following code:

    type MazeGenerator func(m *Maze)

Which replaces the MazeGenerator interface used previously.