At least 37 people have been killed after a gunman disguised as a tourist opened fire at a Tunisian beach hotel with a weapon he had hidden in an umbrella.