Implement (Un)MarshalText instead of (Un)MarshalJSON

- semver is a string protocol, not a JSON one, and encoding/json happens
  to use encoding.Text(Un)Marshaler internally