An Iraq war veteran opened fire at the US army base in Fort Hood, Texas, killing three and injuring 16, before shooting himself to death.