Updated logic in MissionArea::getServerObject

As noted in [this thread](http://www.garagegames.com/community/forums/viewthread/125744), `MissionArea::getServerObject` has some awful performance implications. This function iterates through every server-side object to find a MissionArea.

This commit adds a new static member to MissionArea, `smServerObject`, which is used in place of the old brute-force search. This member is updated in `onAdd` and `onRemove`, and returned by `getServerObject`, which is now a guaranteed constant-time function call.

NOTE: The commit message is slightly wrong. The old function didn't iterate over every server-side object; it iterated over all scope-always objects, a subset of the world. Still, not good news.