Canadian PM Justin Trudeau calls snap elections