Allow extension module to hook into the custom tags.

Also changed the tagname to be passed as atom rather than list.

There are two points that the extension module can hook into; either at the tag-level (i.e. provide the BodyAST for each `render_tag(tagname, ..)` clause) or for the general catch-all clause `render_tag(TagName, ...)`.

We (zotonic) use the latter, as the body ast is generic and doesn't look at the tag name until later..
(the initial version I did used the first version, but I quickly noticed that each clause would have the same body).

I hope that the tagname being atom instead of list doesn't mess things up?.. in which case that could be reverted..

_as you're cracking the whip, I better show that I'm making progress_ :p
:cactus:  _Eeeeh-haaa_