How do I hide the name text on a mob?
An entity will not display its CustomName if there is another entity on top of it. For example, you can summon the villager with an invisible ArmmorStand on top of it:
In version 1.9 or higher:
/summon Villager ~ ~ ~ {CustomName:Bob,Passengers:[{id:ArmorStand,Invisible:1b,Marker:1b}]}
In versions 1.8 or lower:
/summon ArmorStand ~ ~ ~ {Invisible:1b,Marker:1b,Riding:{id:Villager,CustomName:Bob}}