fix fail! and related

After changing to scoped macros, macros like warn!, debug!, and fail!
didn't work any more because they were injected into source programs
using a block... which therefore delimited their scope. This commit
just splits this block into separate macro defs, so each one can be
parsed as a separate item.