John McGregor (Upper Canada)