A lot of the functionality (not quite all of it), that you mention above is already found in
CGI::FormBuilder. Though I have only tinkered with this module, it does have an excellent
website (with a lot of information about it's use). Of the things listed above it does do validation, support for
Text::Template and
HTML::Template.. well have a look for yourself at
what else it can do.
Good luck on your quest.
-enlil