Replaces Agent::Impeders inheritance with CollideFunction.

I don't want to ever see inheritance in this project. I have removed all
impeder agents and instead have created CollideFunction type for
defining a function that will determine where a trajectory for an Actor
is clipped. It will report what it collided with and where.

I have ActorCollider and MapCollider implementations.

I have to decide how events will be triggered and how to return the type
of object collided with. (using apsis object types perhaps: "thing",
"map") It should probably add a special event for collision after
detecting the primary collision at the end of the loop going through
every collider function attached to an Actor.

I have to now do the same to Movers.

Some functions were added to Scene to allow enumeration of objects and
many getters were made into const functions to be safely used in the
collide functions.