Add Decode(io.Reader) feature

The (only) constructor for *Json is from a `[]byte`, which is not always ideal. Using an `io.Reader` can provide a small speed-up and reduction of memory usage, particularly in the case that the underlying JSON is large.

(My use-case was unmarshaling from an `http.Response.Body` containing arbitrary JSON.)