Chrissy Teigen has revealed she is having a baby boy, after promising her husband John Legend that she would keep the gender a secret.