Adds Fall rule.

The Fall rule will add a constant downward acceleration. Useful for
platformers.
Optimizes MapCollider rule.

Instead of checking against every tile of a map, just check for
collisions of the tiles that are known to overlap with the actor. Now
collisions can scale with the map size.

It is unknown why I need to add 2 to the max_x/y for this to work. It
makes little sense. I should look into that. But it is better than
checking every single tile.
Adds Backend and run() method to Engine::System

Next will be to have System load a Scene and draw and animate it.
Loads (does not parse) World::Scene from JSON.

Object engine can also load scenes. However, it is clearer that Scenes,
like most other mutable system objects, should be loaded and requested
as const (immutable) and then instantiated. That way, "levels" for
example can be "restarted" when the player fails, etc.
Adds Registry::Scene.

This class represents a Scene that has not been instantiated. This class
is necessary since Scenes may be reinitialized. For instance, in a game,
a scene can be a level. If the player fails at some task, the scene may
be restarted.

Therefore, this Scene class is the result of loading a JSON description.
It is immutable. It can be used to construct a World::Scene that
represents a mutable, instance of a Scene that a person or machine can
interact with.

I am now starting to pass the Object engine to individual object loaders
so that they can also load objects with the pathing given for the
System. It has created lots of cycle problems, but they are easily
solved.