average salary for software engineers in canada