Keep json numbers as strings in PayloadJsonDecoder

When a json number gets unmarshaled into an interface{}, it's interpreted
as a float64. When this gets converted back to a string (a few lines later),
it's forced to the format "%0.9f", which adds nine zeros after integer
values. Package encoding/json allows us to skip the two conversion steps,
which allows integers to remain integers.
Merge pull request #429 from rhysh/features/json-integers

Keep json numbers as strings in PayloadJsonDecoder