The section number (column header) is -1 when the section is hidden. The defaultdict use would cause extra columns to be created since the column count is based on the size of the headers object and -1 would add a new entry. Change headers to lists.
Infrequently data() is called with an invalid index and then apol crashes.
Break up rule models into three files since RuleListModel doesn't make sense any longer.
Closes #80