Remove :_cursor_refresh_ event, also;

- Add #move to Cursor.
- Refactor to remove the need for Cursors.use.
- Add #hide, #move and #show to Cursors, which call the respective method on the cursor associated with the interface currently in focus.
Add alias for #lines as 'content';

This suits my mental model a little better.
Add #offset method to Interface;

Tracks the virtual cursor within the interface and scroll position of the content for the interface.
Refactor Position.
Refactor Area;

- Rename #(y|x)_offset to more descriptive #(y|x)_index.
- Change behaviour of #(y|x)_range to provide correct values.
- Add #(y|x)_position to convert an index into a real coordinate.
Cursor should be visible by default.
Fix tests for Move.
Remove #cursor from Interface.
Fix interface boundary logic for Cursor.
Refactor Cursors;

- Return new instances of Cursor for operations.
- Remove #build.
- Set visibility to :show by default.
Minor changes to example cursor app;

- Add more content to each line.
- Add short and empty lines.
Working sort of, column offsets not scrolling left/right.
Add streams and colours to example cursor app.
Add #background and #foreground to API::Stream.
Use alias_method to remove #data method.
Extract method;

Move logic of whether to write a timestamp to the log file into a separate method.
Refactor Viewport;

- Remove #scroll_line_into_view and #scroll_column_into_view, and access #line_adjustment and #column_adjustment directly.
- Remove redundant logging.
- Update documentation.
Bail early if instance variable is 0.
Add more documentation, fix whitespace.
Add #size and #empty? methods to Line and Stream.