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);
	}
```
When these lines are ommited, scrolling down, up, and then back down has very strange behavior. The terminal will only catch up to the downward scrolling once it hits new text.