Move common macros into a new crate (fixes #1882)

This moves the bitfield! macro into a new shared `macros` crate as suggested in #1882.