Settings: refactor controller and cell
Each settings item is now of a designated type; the cell simply displays each item as presented without any special logic for each. This new pattern also allows for the removal of all logic that relied on a given settings item's position for its behavior. Now, settings items can be added or removed at will, without affecting the others.
There should be no user-facing changes in this branch; if there are any, they are regressions.
This merge request is pretty big and rewrites a few files; the diff is probably a lot harder to look at than just the new versions of the files themselves.
Edited by Craig Reyenga