Provide ability to ask entities for their thoughts.

This is meant to be used for authoring. It allows admin clients to
inspect and persist the relevant parts of the minds of any NPC.
Allow setting of thoughts.
Fixed op iteration.
Handle correct thought ops.
Perform more proper op handling.
Handle goals correctly.
Added a suspend world feature.

While in suspended state all "Tick" ops will be placed in a special queue
and not delivered until the world is resumed.

This is of most use for world authors who want to edit the world and
not worry about entities being altered.
Added "suspended" property, suspending the world.

In the future this property might be available on all entities.
Fix tests.
Avoid NPE.
Return all goals when asked.

The goal code is a little messy, because we can't rely on looking into
the knowledge map for them, as the knowledge will only keep one goal per
subject.
In order to fix this we instead look for the goals in either "goals" or
"trigger_goals".
Store knowledge of goal differently.

Goals are handled differently than other knowledge, so we need to store
it in a separate dict.
Return string if message is string.
Improve settings of goals.

When a goal is set, the supplied 'object' can also be a list of strings
(i.e. a list of goals). All existing goals for the supplied subject will
be deleted. This allows for much better editing capabilities.
Improve goal creation.

We'll make sure all new goals are valid before we remove the old ones.
Fixed issue with setting multiple goals.
Fix tests.
Merge branch 'world_suspend' into authoring_improvements

Conflicts:
	server/Admin.cpp
Added unit test for suspended prop.
Merge branch 'world_suspend' into authoring_improvements