Use guard compat

- uses Guard::Compat so hopefully it will be more immune to refactoring within Guard
- added specs