autogen: allow building with automake 1.14
Avoid using Cogl's automagic texture apis

The automagic cogl_texture_new* apis that may allocate using several
alternative backends are going to be removed from Cogl so in preparation
for that this patch ensures Rig instead uses the cogl_texture_2d_ api.
Include <cogl-path/cogl-path.h> since api split

The CoglPath api was recently split out of cogl into a separate
libcogl-path library and now the header needs to be included as
<cogl-path/cogl-path.h> and some of the functions have been renamed.
This updates Rig to work with these changes.
property: pass right property to connected callbacks

If rut_property_connect_callback() was used to get a callback whenever a
property is changed we were passing the wrong property pointer to the
callback.
drop-down: don't clamp _set_value()

This avoids clamping the value passed to rut_drop_down_set_value() based
on the number of values associated with the drop down since the value
isn't an index.
journal: copy component list when iterating to delete

This adds a rut_entity_foreach_component_safe function that can be used
to iterate the components while possibly altering the list of components
by taking a copy first. This is used by
rig_undo_journal_delete_entity_and_log otherwise we are left with
partially deleted entities and the inconsistent state can cause Rig to
crash when saving for example.
bin: bail out from _set_child if setting the same child
controller: Add method property

It's not going to be enough to just distinguish between animated or not,
so this adds a method property that lets us distinguish _CONSTANT,
_PATH and _BINDING methods of controlling a property.
Add color source material property

The interaction model of simply selecting an entity and then clicking an
asset and being able to automagically know how to apply the asset to the
entity is too limiting so now we are going to expose component
properties that can accept assets, starting with a "Color Source"
property for the material component.

This adds a new type of property so that the property::spec can specify
an asset type for validation and instrospection.

This adds an inspector for asset based properties which simply shows a
thumbnail of the asset. Currently there is no way to actually change
the asset via the inspector, but the plan is to make it possible to
select the thumbnail area so that when an asset is clicked, if an asset
inspector is selected then we will try and set the asset on the selected
property instead of applying it automatically to the entity.

Since this patch was starting to repeat a common pattern where we
wanted a widget that was simply a composition of other widgets this
adds a _COMPOSITE_SIZABLE interface and supporting utilities so making
composite widgets should be easier now.

Since this patch needed a way to show a thumbnail within a fixed sized
area this adds a new RutShim widget which can be given a fixed size and
have one child set on it whose preferred size will always be ignored
and it will just be allocated to the fixed size of the shim. Note: this
is similar to RutFixed except RutFixed never updates the size of
children. Potentially RutFixed could be changed to have no preferred
size instead of a fixed size since RutShim can be used to force a given
size instead.
controller-view: Adds drop-down for choosing method

This adds a drop-down for choosing between, "Const", "Path" and "Bind"
methods of controlling a property.
renderer: Add enum for source types
Make nine-slice into a component

Although I hope we can move away from using nine-slices as the
foundational primitive of all UIs for now it seems sensible for Rig to
show support for this kind of familiar concept until we have the more
mature alternatives.
journal: improve journal dump code

This changes the way a journal is dumped so we first dump the redo_list
followed by the reverse of the undo_list, showing a pointer between the
two. Visually when you look at this and press ctrl-z/y you can see the
pointer move up and down one list of operations. The operations can now
be indented so we can increase the indent when dumping a subjournal.

This also adds an assertion that we don't recursively insert into the
journal which would be an indication of a bug.
engine: add undo journal stack

This adds api for pushing/popping journals which will update
engine->undo_journal to the top of the stack. This makes it possible to
create sub journals and push them to catch operations that may be logged
by multiple orthogonal components and then log the sub journal as a
single operation.
rut/model: Implement missing attributes generation

The RutModel now automatically generates texture coordinates,
normals and tangents if they are missing from the source PLY
file.
rut/model: Fix uninitialized tangent space coordinates issue

Previously normals and tangents weren't initialized when the
PLY file doesn't provide them causing inaccuracies during
automatic normal and tangent generation
rut-hair: Initial hair implementation

This adds initial support for real-time hair/fur rendering by adding a
new hair component that can can be added to entities which the renderer
recognises and will use the hair component's properties to render the
components geometry as many shells that give the appearance of extruding
hair from the original geometry.
rut: add _model_get_asset proto for rig-pb.c
rig: remove xml load support

We were only keeping the xml loading capability so we had some time to
convert existing ui files from xml to protobuf .rig format files.
pointalism: Use type declaration style of rut-graph

rut/rut-graph.c uses a cleaner style of type initialisation which
doesn't require there to be vtables scattered throughout the source
file.