Factor out scene viewing behavior into SceneViewer.js class and related refactoring in progress -- WIP commit