Avoid virtual setters during Load/initialisation. Fixes #2221.

Load/Init should only be setting up state, whereas virtual setters are
often overriden in derived classes to trigger things on particular state
changes (e.g., put a message in the ship console when the ship alert state
changes). Load/Init is not a state change, because there's no (valid)
previous state.
Merge pull request #2223 from johnbartholomew/issue-2221

Avoid virtual setters during Load/initialisation