Fix objects part of a structure ignoring their height limits

Previously, height limits were only checked when spawning a single
object that was not part of a structure. For structures, either a
random number in the height limits was chosen, or a value based on the
terrain. When the value was based on the terrain, the height limits
were ignored.

The height limits are now checked in the canSpawnAt method of the
object. BO2s already did this, so no fix is needed for them. (Yes, BO2s
can be used as part of a BO3 structure.)

The SpawnHeight enum is no longer an enum, it's now moved to it's own
class (StructurePartSpawnHeight). Custom implementations are now
possible. I couldn't think of a better name for the class, but I hope
that the extra JavaDocs help understanding what this class does.