Simplify state machine

The banner code was ugly and seemed to have variable scoping
issues that meant implementing hooks was hard

- Remove ladder support
- Implement hooks (hooks on fallback still broken
- Refactor code entirely in syntax-rules, looks safer
- implement tests for hooks
Global hooks

Allow a hook that is action after all other hooks are executed
Also do a bit of DRY tidying for the "abort if no fallback" case
Fix abort on invalid

Fix abort on an unhandled state, and add a test case
Remove debug statements from the tests
Working global hooks