Fixed|World|SectorCluster: Crash with sci2.wad (Doom2) upon triggering the exit crusher

The crash was the result of an incorrect assumption that all sector
clusters will have at least one outer boundary edge. While this is
logically true there are some special cases in which no boundary is
recorded (e.g., the one unique outer halfedge is twined with an egde
originating from a degenerate BSP leaf). In this case, the trigger
is a so-called "control sector" outside the map attempting to update
surface light decorations when it's ceiling plane moved.

Todo for later: There is no need for such a cluster to be observing
plane movement at all. To address this properly we need two things;
1) BSP building algorithm that guarantees topologically sound and
geometrically correct data, 2) more intelligent SectorCluster.

IssueID #1791
Typo in previous commit (renamed in recent refactoring)
Merge remote-tracking branch 'remotes/origin/master' into revise-map-geometry-generation

Conflicts:
doomsday/client/src/world/sectorcluster.cpp
Refactor|World|BspLeaf: Extracted ConvexSubspace from BspLeaf

To avoid collision and name overloading, the BSP builder's component
of the same name was renamed as ConvexSubspaceProxy. In the future
much of this functionality can and should be relocated.

Todo:
- Determine whether the Polyobj link set can be moved
- SectorCluster should now be a set of ConvexSubspaces
- ConvexSubspace should be a DMU object (takes BspLeaf's place)
- Cleanup/update API docs