A very pertinent point that people seem to have completely missed is the fact that unlike the other ATGs/Greats, Cook has had almost no opportunity to engage in minnow-bashing and boost his stats.
He has played 134 of his 140 Tests vs Australia, SA, India, Pakistan, NZ, WI and SL respectively.
0 matches vs Zimbabwe and only 6 vs Bangladesh.
Two of those Tests vs Bangladesh were a couple of months ago and Bangladesh right now are a formidable team in home conditions. In addition, he has one played two matches vs Bangladesh at home.
It is pretty obvious that he had the opportunity to play many matches vs teams like Bangladesh and Zimbabwe, he would have boosted his stats further and perhaps he would have had a 50+ average. Neither of these teams possess the bowlers who are regularly touted as Cook's weakness.
An average of 46 after 134 Tests vs non-minnows is a phenomenal record. Playing so many matches has its upsides but also downsides. You have more chances to succeed but also more chances to fail which stand out.
Let's consider some of the other batsmen of his era and how many matches they have played vs the two minnows of the last 15 odd years - Bangladesh and Zimbabwe:
Younis Khan - 12, average of 70+
Sangakkara - 20, average of 90+
Graeme Smith - 10, average of 80+
Post 2000, Tendulkar and Dravid themselves played 13 match and 15 matches, averaging 100+ and 70+ respectively.
[MENTION=142642]CricketJustice[/MENTION]
You mentioned Hayden. No doubt a formidable opener and brutal on his day, but if are going to highlight Cook's weakness against swing, we need to do the same for Hayden. He was always poor in England, NZ and SA - the only three countries with considerable lateral movement.
Besides, 100/innings ratio is not always the most useful and relevant criteria. If that is so, then Younis is one of the best ever players of all time because his 100/innings ratio is quite remarkable.
That however does not mean that Cook is better than Hayden. A case can be made for both, but Hayden is not a clearcut winner as you are implying.