Better default behaviour for 'abstraction levels'

- add support for the 'default' keyword to set default abstraction level
  when declaring levels,

- add_data without explicit level mean the data field will be present at
  all levels.

Refer to doc/morse/dev/adding_component.rst for details.

While here, added a simple unit-test for levels.
Use the new 'abstraction levels' API for Odometry
[doc] Updated generate_doc to take into account abstraction level

These are obviously displayed only when defined.

While here:
- added a generated code example for each components
- display which interfaces are available, based on builder/data.py