support DisallowUnknownFields in golang 1.10 fix #236 distinguish upper/lower field names improve marshal performance by https://github.com/json-iterator/go/pull/234