Modify the way constraints are passed to paths in steering methods.

  - abstract class steering method set the constraints to the path after
    construction of concrete instance.
Add a constructor that takes a ConstraintSet in class Path

  - use this constructor when extracting a path.
In DiffusingPlanner::extend, apply constraints if there is no ConfigProjector.
Add virtual methods print in Path classes.
Cosmetic change
  enforce 80 columns,
  correct typo.
Do not copy StraightPath instances
  - as they are immutable and handled through shared pointers,
    StraightPath::copy returns a pointer to the same instance.
implement extract method in StraigthPath.
Path::extract: if sub-interval is the whole path, return copy of path.
Path does not derive anymore from roboptim::Trajectory.
Partially revert 8732aa7e2fcdce

  When problem is constrained, extensions toward q_rand from each connected
  component usually reach different configurations, even if no collision occur.
  These configurations need to be connected to each other in a second step.