Refactor `Action` class and fix up specs
Add real support for custom actions with HTTP methods