Just to answer one sprcific question here...
Lyon's book explaing what A_GIMME does, but not A_CANT. I checked m_pd.h a bit but didn't make much out of it. It is there where the problem lies?
A_CANT is used when an object receives a message but the arguments can't be safely typechecked by Pd - so these messages are refued if sent by the patch, but friendly C code can call them using a lower-level mechanism.
cheers Miller