OLD: SlippyCheeze is right that it's probably easiest to just grab an addon that does this, otherwise you'll need to continuously update your macro as you learn new mounts (unless you want to make the script even more complex, to loop through all your mounts until it finds what you're looking for).
Here is a simple code snippet that should work, but you'll have to find the right number for the Chauffeured Chopper / Heirloom Hoarder in your mount tab. I'll see what I can come up with later tonight, if I get time to get on.
Code:
/run if UnitLevel("player") <= 20 then C_MountJournal.Summon(0) elseif GetCurrentMapContinent()==7 and GetZoneText()=="Nagrand" then CastSpellByName( "Garrison Ability") else C_MountJournal.Summon(0) end
You will need to replace the bolded 0 above with the count of your heirloom mount. You can do something like in this link: http://us.battle.net/wow/en/forum/topic/15007161517
NEW: Alternatively, I've written a little loop that should work, but I cannot test this at the moment. You will need to replace the bolded text towards the end with the name of the mount you'd like to summon.
Code:
/run local mIndex = function (name) for index=1,C_MountJournal.GetNumMounts() do if select(1,C_MountJournal.GetMountInfo(index)) == name then return index end end end if UnitLevel("player") <= 20 then C_MountJournal.Summon(mIndex("Heirloom Hoarder")) elseif GetCurrentMapContinent()==7 and GetZoneText()=="Nagrand" then CastSpellByName( "Garrison Ability") else C_MountJournal.Summon(mIndex("OTHER MOUNT YOU WANT TO SUMMON")) end