A copy of the go encoding/json package with some additions