For starters, could you retry with OACS 4.6? I did some tweaking of things in order to get custom widgets and ad_form to work together and you won't find them in OACS 4.5.
We do need documentation on this, one could say I embarked on a journey of discovery when I figured out how to get this stuff to work when I was helping the Greenpeace folks.
I do know off the top of my head that all you need to make a type available is to define template::data::validate:yourtype, and all you need to do to make a widget available is to define template::widget::yourtype.
So it does seem that you're doing the right thing.
You did restart AOLserver, right? And you did name your new .tcl file "foo-procs.tcl" rather than just "foo.tcl", right? (it won't be sourced at startup if it's not named "*-init.tcl" or "*-procs.tcl")