Add navigation_info and viewpoint nodes to vrml_loader.

These are created for every loaded scene and will be used as default
frustum and viewpoint.
Refactor the entire scene navigation mechanism.

Refactored boxfish::Control to better handle user navigation:
1. apply_local_transform() has been removed. Instead of moving the entire scene
Only viewpoint is moved.
2. Instead of working with OpenGL modelview matrix directly,
the user navigation transform is set on the active viewpoint defined by the browser
Document will now destroy the Control object on close.

This will free the memory allocated by the scene.
There is still problem with cancelling scene loading.
Fix sporadic asserts from openvrml basetypes on NaN values.

The problem was caused by uninitialized m_translation, m_rotation,
m_permanent_rotation_delta fields in Control.
Make the user translation/zoom step depend on avatar size and as consequence on the scene size.

This will make uniform behavior of translation by user, independent of the scene size.
Fix user rotation that was calculated in model local coordinates.

Now it is calculated relative to viewpoint coordinates.
Fix rotation center for user defined rotation for viewpoint.

The center was assumed to be in origin, while it is supposed to be in bbox
center.
Fixes in shpere array generation.

The geometry/connectivity arrays used to generate Sphere object produced
rendering artefacts. This is due to over-meshing (two same spheres were actually produced)
and wrong normals/face orientation.
orientation.
Fix edge calculation errors in shpere generaryon algorithm. Add more tracing.
Implement scene loading cancelation.

Pressing close button durin scene load will cause the following chain of events:
1. Document will call Loader::cancel()
2. Loader::cancel() will set m_enable state to false
3. Progress callback of Loader will check m_enable and return -1
4. Source will check the progress code and abort
5. Browser will emit browser changed event
6. The event will be dispatched to Loader
7. Document is destroyed by Qt.

It is possible for step 7 to be called before 2-6 even begin, but since it
calls for browser() destructor it will wait till the browser loader thread
is completed.
Started to implement extrusion
Added generation of yaxis and zaxis sequences, each sequence has element
for a single spine point.
Continuing generate_extrusion_arrays()...
 Still continuing generate_extrusion_arrays()...
Working extrusion body generation. Only geometry and index, no normals and texture yet.
Fix wrong handling spine borders conditions.

The closed predicate was applied to the cross section curve instead of spine
by mistake.
Fix extrusion orientation calculation order.

Base orientation (SCP as defined in VRML97 spec) was applied before suborientation
defined in the scene.
Switch to glDrawArrays for extrusion

1. Use glDrawArrays instead of glDrawElements since former allows normal per vertex
for crease angle computation
2. Make aftermath Z axis adjustment as defined in VRML97 spec
3. Use openvrml math for resulting arrays.
Merged useful stuff from extrusion-vertex-arrays branch
Working extrusion array generation based on ifs generation.