Make goal checking code more robust and add docs.

Instead of checking whether there's a debug string available we should
check for any operation being returned.
Make goals behave more stringent.

I.e. make functions behave just like subgoals.
Print out the entity id in debug when thinking.
Store last processed goals as debug data.
Send last processed goals in report.

Also don't send data if there's nothing in the collections or maps.
Provide better error messages.
Install properties.

It's imperative that all properties are installed here; else the system
will end up in an invalid state whenever data is restored as a result of
a restart (since any missing property then will default to a core
property class.
Assert and warn about property redefine.

Whenever a property isn't installed into CorePropertyManager properly
there's a risk that the system will be put into an invalid state when
it's shutdown and restarted (and data is persisted and restored). To
prevent this we'll both assert and log a warning if a property ever is
redefined.
Fix tests.
Add test for setting location data for MemEntity.
Make sure location is updated.

Since location data is handled by properties we need to make sure that
those properties are correctly tied to their attributes.
Fix and extend tests.
Remove superfluous method call.
Only print if something changed.

To make the log a little more readable.
Enable location updates of persisted entities.
Fixed missing return value.
Alter containered signal.

Make it not single shot. And supply the old location, as it was before
the container changed.
This is to make it more useful in general.
Persist containment changes.
Disconnect signals when item is removed.
Expose whether a thing is currently visible.

This is useful in AI scripts when looking for things.