Separate macros by mutability

* distinguish between mutable and immutable macros
Merge pull request #3 from tysonjh/compile-time

Separate macros by mutability