Improved Second Step

Deleted old function for removing random rooms. Fixed the occasional NPE
described in my previous commit - deferred the removal of nodes from the
graph until after iterating over their collection. Added conditions for
removing maze sections that are too small to be useful.
Reduced Floor Doorways

Added code to minimize the number of doorways that involve dropping
through the floor. Added a DisjointSet class as part of the
implementation. I also split the maze construction process into two
classes (MazeDesigner and MazeBuilder) to make it clearer.
Organized Doorway Code

Separated the code that carves up doorways in mazes. Mostly a minor
change in preparation for giving doors smarter placements.
Minor Change

Adjusted the size of mazes slightly to reign in huge rooms.  If the
problem persists, we can consider other options such as dropping dungeon
sizes a little more, increasing the number of splits, or biasing the
split plane selection toward the middle of the range.
Fixed Bug in LinkedList

Fixed a bug in LinkedList - the size of the list never increased when
elements were added.
Fixed Bug in MazeDesigner

Fixed a bug in MazeDesigner that would connect some rooms with duplicate
doorways. The problem was in how intersections were being tracked to
improve the efficiency of adjacency checks.
Improved Doorway Placement

Doorways are now placed in different ways, depending on the dimensions
of the walls that they're on. This includes that large walls get two
doorways connecting to the same room.
Improved Doorway Placement

Changed MazeDesigner to prune out some unnecessary doorways at random by
removing edges from the room graph. Previous mazes allowed all side
paths to exist, which resulted in a kind of circular layout. Although
that was disorienting to people at first, if you realized it was a
circle, it became simple to navigate through the maze. This update makes
branching paths more common.
Minor Change

Changed a comment
Completed Doorway Placement

All doorways are placed sensibly now, including vertical passages
between different floors.
Merge pull request #119 from SenseiKiwi/mazes

Mazes