IND/RI/NEL control sequence implementations

This is the first in what will be a series of control sequence implementations, starting off with [INDEX](http://vt100.net/docs/vt100-ug/chapter3.html#IND), [REVERSE_INDEX](http://vt100.net/docs/vt100-ug/chapter3.html#RI), and [NEXT_LINE](http://vt100.net/docs/vt100-ug/chapter3.html#NEL). Currently, the steps used for each are:

1. inc/dec the scroll_offset
2. move cursor down/up
3. allocate/deallocate line views

In addition, the VERTICAL_TAB case was modified to allocate new line views and then scroll to the bottom of the terminal view

My main use case for this feature was `man`, so once I could successfully scroll up and down, I knew that progress had been made.

Some potential future control sequences have been added to the `enum` along with markings specifying which sequences have been implemented or not.

Bugs Introduced:
While running the `vttest` display test (option 1) the scroll_offset seems to become negative to around -37 or so, and I'm interested in the function `erase_range_screen` which seems to be accessing terminal space with an "absolute position"

```
private void erase_range_screen(CursorPosition start_position = {1, 1},
	CursorPosition end_position = {terminal.lines, terminal.columns + 1}) {
	var absolute_start_position = get_absolute_position(start_position);
	var absolute_end_position = get_absolute_position(end_position);
	
	// Constrain positions to permissible range
	absolute_start_position.line = int.min(absolute_start_position.line, size - 1);

	absolute_start_position.column = int.min(absolute_start_position.column, //<- Fails here
		get(absolute_start_position.line).get_length()); //<-------- due to negative index

	absolute_end_position.line = int.min(absolute_end_position.line, size - 1);
	absolute_end_position.column = int.min(absolute_end_position.column,
		get(absolute_end_position.line).get_length());
	
	erase_range(absolute_start_position, absolute_end_position);
	}
```
Did you have the chance to revisit this? Meanwhile, I've made some changes to the way scrolling works, maybe that improved the situation already. Even if that should not be the case and those lines are indeed necessary, I'd probably still like to merge your PR since it fixes many problems with terminal programs.