Fix signal names and parameters
Move 'error' keys to correct place.
Use a dict instead of an object to ease serialization.
Use stdlib's json to ensure receiving unicode.
Remove unneded signal parameter.
Add type checking for the backend.