Arch func

We're going to have quite a few places where we have a dynamic supported_arch value (usually obtained from a Task) and we need to dispatch to the correct instance of a function templated over Arch. A macro will make this more concise and extensible.