Allow non-integer id's in JSON RPC requests

I've noticed some clients sending a non-numeric "id" in the JSON RPC request when doing a subscribe request. In particular one was sending the string "s". The JSON RPC spec allows numbers and strings.

This patch uses "optLong" instead of "getLong" to avoid failing with an exception, and where the "id" returned back to the client it uses "opt" to deal with whatever format the original request used.