Adam,
Well done, really useful and nice.
I have to say something about IntroJs and why it was trended, it's actually because using IntroJs is really easy because of attributes, it's pretty cool and easy, isn't it?
I think using the IntroJs with the way that you produced, literal object, is cool and also I'll add it to the next version of IntroJs but I think for the first versions it's better to keep reading and doing the introduction with attributes (though I think you can keep both literal object and attribute functionality)
Let me know what you think.
Afshin