Improve UX of view settings Apply button

Checkmark icon now changes to spinner while settings are being saved.
Improve UX of field visibility in view settings

Visible fields now show an eye icon in the field list, so user can see
at a glance which fields are visible without needing to click on each one.
Remove user/role code duplication

The by-role and by-user tabs in view-settings.html were almost complete
duplicates of each other, with the only difference being which part of
the config data structure they write to. Removed that duplication. A few
divs need to be shown or hidden based on whether the current tab is a
byUser tab or a byRole tab, but overall it simplifies the logic a lot.

And since view-settings.html had almost all of its lines changed anyway,
converted tabs to spaces at the same time.
Add ViewModel for input systems configuration
Change tabs to spaces in bellows/pages/util.js

Next commit will add some code to util.js, which will use spaces for
indentation. So this commit simply changes the indentation of util.js
without making any changes, to keep these separate changes separate.
Some E2E tests for view settings page

Still to test: per-username settings changes (as opposed to per-role),
and overriding input systems for a given field & user/role.
Add more E2E tests for view settings, and a bugfix

When picking a specific user, applying settings, and clicking away from
the view settings page, on return to the view settings page that user's
settings were not being loaded properly into the view settings page. Fixed.
Merge branch 'feature/overrideInputSystems'