Move macros into a separate crate, for convenience