SmrPort: consistently update cache
SmrPort: consistently update cache

The cached version of the port was only updated for port
upgrades and in-combat downgrades. We now update the cache
for the following events:

* Race change (i.e. port is claimed after a raid)
* All level changes (i.e. after a port is razed)

This should now encompass all scenarios where the cached
version of the port has changed.

We use a `cacheIsValid` member now, and set that to false
in these cases; this allows us to only update the cache
once (in the `update` method).

smrealms/smr,hemberger/smr,hemberger/smr,hemberger/smr,smrealms/smr,hemberger/smr,smrealms/smr