I'm somewhat partial to keeping it this way as it's consistent with how we do things through the whole architecture: a module directly sets the input UAVO for the next downstream module.  For example is the same with StabilizationDesired and AltitudeHold here.  

However your point that we are essentially duplicating higher level functionality (setRthPathDesired) is a good one.  Especially since how that is done might have airframe specific details eventually. I think #479 will be a better place to address these issues, since it already alters how we interface position hold / return to home with manual control.  That will also hopefully lessen merge conflicts that in I implement a new setRthPathDesired method here and you have one there.