Interaction between riparian vegetation and flow: traditional engineering approaches and recent developments