I just had to follow up about the 'one class not possible' observation I made. It's not possible to have a good CC class that uses one set of combat logic, even! For instance, in the old days, hunters had to have one set of logic before level 10 when they got their pet, and another set after they got their pet.
Another example, is rogues and PVE. After many intense discussions with an 18 year old uber-leet WoW player, I had this custom class created that would fire off as many ambushes as possible, which is the super-spell for subtlety rogues, but it requires you to be in stealth to use. I had the code stealthing every time it turned around. However, it worked like crap! You know why? For rogues, when you're playing against monsters by yourself, as soon as you go stealth, the monsters health pops back up to 100%! Only if you're in a group, does it work - then, the monsters health stays put, when you go stealth. So I had to rip out all the 'stealth as much as possible' code, and go with 'stealth the first monster only' techniques instead.
In battlegrounds and dungeons, the 'stealth as much as possible' technique is good.
Anyway. This gives you just a small example of why much code is not reusable between classes. Few other classes know or care about the subtlety of when to stealth vs. not stealth.