All blocks will use IDs internally, but any user-interface based things will use identifiers in text. It's a step toward the Mod API in that instead of IDs which shift when mods add content, remove content, etc, you define things by where the content comes from and a designated name. A mod adds its own stone, you use Mod:Stone, for instance. They don't want our things like command-blocks relying on IDs which can be broken if you install something, without even knowing why.
Edit: Bat Stack:
summon Bat ~ ~1 ~ {Riding:{id:"Bat",Riding:{id:"Bat",Riding:{id:"Bat",Riding:{id:"Bat",Riding:{id:"Bat",Riding:{id:"Bat",Riding:{id:"Bat",Riding:{id:"Bat",Riding:{id:"Bat",Riding:{id:"Bat",Riding:{id:"Bat",Riding:{id:"Bat",Riding:{id:"Bat",Riding:{id:"Bat",Riding:{id:"Bat",Riding:{id:"Bat",Riding:{id:"Bat",Riding:{id:"Bat"}}}}}}}}}}}}}}}}}}}