camera: Add suspend/resume api

This adds rut_camera_suspend/resume functions that can be used to
temporarily stop an in-progress frame allowing any number of other
cameras to be used before resuming a camera frame.

While a camera is suspended it is currently expected that the camera
transforms will not be modified and we currently assert that this is the
case on resume. Potentially we could change the implementation to
explicitly copy the viewport and projection so we could allow camera
modifications (perhaps in preparation for a later frame).

Note: We had originally considered a _paint_context_push/pop_camera type
of api to support temporarily switching to a different camera but here
are some of the reasons we decided against that:
- we wanted to contain any code responsible for saving/restoring
  modelview, projection and viewport state in rut-camera.c
- we have use cases where we want to switch to rendering with multiple
  different cameras before returning to the original and those cameras
  aren't related hierarchically but instead sequentially and so having
  to _push() and _pop() each of them sequentially would end up doing
  redundant work to restore state for each _pop().
- it's not obvious if a _push() api would implicitly _flush() the
  specified camera's state or just save it to be restored in the _pop().
camera: Adds zoom property

This adds a zoom property to the RutCamera component that affects the
projection matrix by changing with the width and height of the frustum
according to a camera->zoom factor. This is now used by the editor
camera to handle zoom navigation so when we are in play mode zooming no
longer affects the depth of field effect.
rig: remove unused init_types() function

Simply removes an unused function
build: update autogen.sh

This adds a new autogen.sh that doesn't depend on gnome-autogen.sh
use AM_CPPFLAGS not INCLUDES

automake 1.14 warns about the INCLUDES variable being deprecated by
AM_CPPFLAGS so this updates rig to avoid those warnings.
build a separate rig-slave binary

Instead of having command line options for running rig in different
device modes we now build a separate rig-slave binary.
adds initial avahi service publishing support

This adds basic support for publishing a rig-slave service on the
network via the ZeroConf protocol
Add initial avahi lookup support

This adds initial support for browsing the network for rig-slaves that
the editor might want to connect to.
Adds inital protobuf-c rpc client/server support

This adds basic support for starting an protobuf-c rpc server or client
and integrating that with the glib mainloop.
rut-util: Add missing _intersect_mesh prototype to header

rut_util_intersect_mesh is used in main.c so this makes sure we have a
prototype in rut-util.h that can be included.
rut: include -bin and -box-layout in rut.h

rut-bin.h and rut-box-layout.h were not being made available via rut.h
but we want to use both of these from rig.
box-layout: improve packing algorithm

This ports some of the allocation code from gtkbox.c to
rut-box-layout.c, primarily so that we taking into account the size of
the box-layout itself.

This also adds support for right-to-left and bottom-to-top packing;
setting a fixed spacing between children; homogeneous or non-homogeneous
packing of children; consideration for the users text-direction; setting
children to expand or not.
bin: save child_preferred_size_closure ptr

When rut_bin_set_child() is given a NULL child then we try to disconnect
the preferred size callback associated with the previous child, but we
were referring to a closure pointer that wasn't initialized when the
callback was first registered.
renames rut-split-view to rig-split-view

This moves rut/rut-split-view.[ch] to rig/jni/rig-split-view.[ch] since
it relates to closely to the core ui policy of Rig that we don't expect
it to be a general purpose widget in the end.
main: Add top vbox with place holder connect button

This adds a top level vbox for the rig ui so we can add a bar along the
top of the ui with various widgets. As a place holder this adds a
connect button which we may hook up as an initial means to connect to a
slave device.
Add name member to RutType and _object_get_type_name()

rut_type_init now takes a name argument so that every RutType can be
associated with a name string which can be retrieved from any object
using rut_object_get_type_name().
ensure sizable objects implement get_preferred funcs

This adds rut_simple_sizable_get_preferred_width/height functions that
can be used a default implementations in the case of simple objects that
don't really have any size preferences.
button: implement sizable

This makes RutButton implement the sizable interface so that it can
participate in layout negotiations.
Add an initial rig-view widget

This adds an initial rig-view widget that is intended to provide a
common shell for the modular views that make up the Rig UI, providing a
place for toolbar items and then a bin to hold the main contents of the
view. The plan is to also add a drop-down widget to the toolbar for
switching the view type.
factor out RutCameraView

This factors out all of the high-level code for painting, picking and
interacting with a scene into a RutCameraView widget.

The intention is that we should be able to show multiple views of the
scene at the same time, from different angles and so this is the first
step to enabling that.