[doc] Improved rendering of line num in doc code samples
[doc] Improve CSS for images. Honor :align center:
[doc] Minor change to CSS for admonitions
[services] Expose services exposed by robots in details request

Part of #299
[pymorse] Export robot services as method

Fix #299
[doc] Added a favicon to MORSE documentation
Add subparsers for MORSE sub-commands

This allows to cleanly support different set of
cmd-line options for sub-commands like 'run', 'edit', 'check'.

This is a required cleaning step before introducing 'morse create'
family of options.
[cmake] Another patch for doc building related to locale

C.UTF-8 seems to exist only on ubuntu, debian nowadays. So, try to
detect automatically what UTF-8 locale exists on the system, and choose
the first one.

XXX Probably does not work on windows at all.
[ros] semantic camera use MorseEncoder
Start refactoring modifiers

Modifiers are now based on an Abstract class
Core MORSE part refactored
Only the NED modifier is up-to-date
ned_test passes succesfully!
Modifier parameter method + UTM

The parameter method helps modifiers
find their parameter, either in their kwargs
or in the global scene.

Fix some issues with passing kwargs to modifier
constructor.

Update the UTM modifier + unit test.
Add a method to log modifier key errors

A generic error message can be displayed
if the modifier tries to access unavailable
component data.

While here, update all modifiers using the
class-based structure.
Noise modifier unit test

Tests if data is noised (i.e. different from
perfect data) for Position, Orientation, Pose,
IMU noise modifiers.

The Odometry noise modifier must still be rewritten
in order to match the Odometry levels.
Generate doc for modifiers

Doc generation for modifiers is now automatic
The doc is quite simple: it displays the
description of the main class, and a list
of modifier parameters.

While here, improved a bit code documentation
and unit tests.
[doc] Update doc for adding modifiers
[doc] Add a modifier section in the builder doc
Add a 2D parameter to PoseNoise

If the _2D parameter is set to True
the noise is only applied to x, y and yaw.

Otherwise, the noise is applied to all
data (x, y, z, yaw, pitch, roll).
[builder] Add make_ghost method to the Builder

This method makes the robot transparent and changes its physics type to
NO_COLLISION

It allows to show a 'ghost' in the simulator for instance to display
some pose estimation computed outside MORSE.

A ghost robot has no influence on other robots (no collision and
invisible to laser scanners), except for video camera that see the
ghost!
[doc] Add a tutorial for noise and ghost
[doc] Adding explanations on pose estimation