Macron calls snap French election after European defeat