Json doesn't need to depend on IoError to implement Encodable

The implementation of `Encodable<E, S>` for `Json` didn't assume `S` to be `IoError`, only the default encoders for `Json` are depend on it. So this can be parametrize to increase flexiblity. If not, types that implement `Encoder<E>` where `E` is not `IoError` can't be worked with `Json`.