Add defcancel and cancellation functions

Cancellation functions are just functions that are created with
defcancel. These will then all be executed in turn when the `cancel`
command is ran.
Bind `cancel` to C-g in the *top-map*
Destroy the webview widget when closing the tab
Reset the key state when calling `cancel`