rig-camera-view: add rig_camera_view_set_scene api

To enable reloading a new scene in Rig gracefully we need the ability to
destroy an entity scene, create a new one and point a RigCameraView at
the new scene. This adds a rig_camera_view_set_scene() function so that
the scene being viewed can be changed at runtime.
engine: more tidying up of rig_engine_init

This continues to move more of rig_engine_init up so it happens before
loading any ui to clarify what parts don't depend on ui loading.

This patch factors out code into a rig_engine_handle_ui_update() that
needs to be re-run whenever a new ui is loaded. Closely related to this
api rig_free_ux has been renamed to rig_engine_free_ui which is also
called whenever a new ui is loaded.

In refactoring this code it was noticed that RigEngine::device_transform
isn't used any more so it can be removed.

rig_pb_unserialize_ui and rig_load_xml now call rig_engine_load_post()
so that whenever a new ui is loaded then rig-engine gets an opportunity
to update other state that depends on the current ui.

A resize handler is now always registered so that we correctly handle
slave device windows being resized to match the ui's
device/width/height.

We avoid redundantly setting the camera viewport just before calling
allocate() which will also set the viewport.
split up loading builtin assets

This ensures we only load the builtin assets once during rig_engine_init
instead of repeatedly re-loading them in rig_load_asset_list
Create a new scene graph when loading

When loading a new ui we now unref engine->scene and create a new root
scene graph node. Without this then attempting to load a new ui at
runtime would result in the new entities being combined into the
existing scene.
engine: try to be more thorough about ui cleanup

This updates rig_engine_free_ui to be more thorough about cleaning up
things related to the currently loaded ui (including things created in
rig_engine_handle_ui_update). This also updates rig_engine_fini to use
rig_engine_free_ui
engine: remove unused shadow_map_camera

There was a RigEngine::shadow_map_camera that was being initialized but
not used anywhere so this patch simply removes it.
engine: avoid redundant resize requests

This avoids calling SDL_SetWindowSize if we know the onscreen
framebuffer already has the desired size. Without this slave windows
would jump around the screen whenever the ui was re-synced.
Issue naive full ui sync on journal changes

As the simplest way of keeping slave devices synchronized with the ui
being edited this hooks into rig_undo_journal_insert to trigger an ui
reload for all current slave masters.
engine: connect to all slaves not just one

If there are multiple slave devices available on the network the
pressing the "Connect" button will now connect to all of them instead of
just the first one in the list.
engine: set progress when creating a transition

In rig_create_transition() we now initialize the progress of the
transition to match the progress of engine->timeline.
load-save: only add .rig ext to .xml filenames

If we loaded a .xml file then when we save we add a .rig extension. This
patch makes sure we don't also add an additional .rig extension if we
loaded a .rig file in the first place.