WebExtensions: Rewrite message handling to be async friendly
This allows async non-blocking API calls that can report errors.
TODO:
-
All args are now passed as lists, rewrite handlers for this -
Rewrite handlers to return readable errors on failure instead of returning NULL
-
Rewrite handlers that do IO to be non-blocking (will do in later PR)
Edited by Patrick Griffis