Only read `macro` as a macro definition if it hasn't been rebound

This is an attempt to fix #289. Please let me know if I've missed anything!