Use call_user_func_array() so the variables come across right
Make sure we set the response header appropriately
Store the method/params so they can be access in onSuccess/onError
Throw an exception if the method name is missing
Make us able to detect a version 1.0 client

We detect a version 1.0 client and then tailor our response
to be 1.0 appropriate.
Don't log the version, it was for debug testing only
Use the same error level as the calling code by default
Clean up a bunch of trailing whitespace
Version 1.1 clients send a "version" param