Further template changes to span drawers

Can accept a struct type with inline static functions and the compiler
generates identical ASM for optimized code. Eliminates need to have
specialized GEN versions.