Huge test suite makeover (function pointers!); add shell shaman test