Rewrite the profiler

Rewrite the profiler :

- provide more methods
- decouple the rendering
- design it so it's easy to write/test a renderer
- 96% of coverage
- documentation updated