France beat Iceland 5-2 to set up a Euro 2016 semi-final clash against world champions Germany in Marseille.