Remove redundant documentation.
Add more documentation.
Improve Trace;

- Move trace call as not all classes were loaded at this point.
- Don't log the event as most of the time it is one value (by default, 'call').
- Colourize primitive classes.
- Add argument class inspection.
- Separate and ignore exception classes.
- Add ignored classes list to decrease verbosity.
Don't trace API#log.
Add Offsets repository and Offset class;

The Offsets repository stores the offset values (y, x) for the content of each interface by name. The Offset class provides a mechanism to update the values in a movement-based way.
Add more documentation.
Simplify Cursor app;

Let's get one interface with cursor working correctly before dealing with more.
Add todos.
Rename attributes.
Reorder methods, group like with like;

Also, alter (x|y)_range to include (x|y) and (x|y)_max.
Remove movement methods from Offset;

My thinking at the moment is there should be a Movement object which is responsible for the changing of offsets, cursors etc. Acting as a facade to these subsystems will hopefully make it easier to orchestrate the changing of an interface or interfaces.
Add ContentArea class;

Responsible for providing the size of the content for a given interface.
Access the interface geometry directly without Forwardable.
Add more documentation.
Remove movement methods from Cursor.
Add VisibleArea class.
Add Move class.
Use #viewport_height and #viewport_width instead;

If the terminal has resized, then the values of height and width would be incorrect; #viewport_height and #viewport_width recalculate the area available.
Scrolling stuff. Still not right.