Iran has vowed to take revenge for the killing of a top Hamas leader in Tehran last week, an attack it blamed on Israel.