Added pattern matching in notify_wrap to check that all bases covered

It gets a little magical (and unhygenic) to assume Var names in context, but in a local spot like that you can get away with it.
It doesn't buy a lot here, just a shortening of the function call.

I write all my macros like this:

-define(FN(__Size, __Weight), compute_volume(__Size, __Weight)).

It's the best you can do in erlang. No one writes var names with double underscore at the front, so there should be no namespace collisions with the local vars in the macros.