Update guard compat n rework specs

- update to newer Guard::Compat::UI (to avoid dependency on Guard)
- add specs to template and refactor out the dsl classes