basic `tag` method

This is the base method all other tag methods will be built off of.
It takes a name and some optional content and options.  The content
is nested if present and the options are converted to an html attrs
string.

This is the most basic way to generate a tag and all future tag methods
will just be macros that in some way build/provide arguments to call
this method with.  This is the base of all the things.

@jcredding ready for review.