Rewrote the definition for make-macro.

It now uses eval-when instead of using defmacro.