does he complain of stomach pain, feeling sick, or anything?
I think it can be psychological, more so than anything physically wrong. He's using one power he know he can control, the not eating. There are many reasons as to why he can possibly be doing that, but that would be something to figure out.
he already has a very varied diet, he eats everthing, all meats veg fruit etc, i always add more butter and cream but it makes no difference,
with regards to the swallowing, he will eat some of his dinner (by some i mean a VERY small amount) then he will say he doesnt want it any more, and then he will gag...
You can try changing his diet to a more high calorie diet, to get him to add some weight. You can add more butter to help with more calories. Pediasure can help with getting enough nutrients.
You say he gags... as if he doesn't like the food? or like he is physically unable to swallow? If he is having problems swallowing, he needs to be seen by his pediatrician soon.