Tag release v0.4.0

After some time of inactivity this package is now maintained again.

This release should support alll of TOML 1.0 and has various bugfixes
and a few small improvements.

This requires Go 1.13 or newer; older Go versions will no longer work.

TOML 1.0 support
----------------
Previously this library implemented TOML 0.3; now all of TOML 1.0 is
supported:

- Support dotted keys (`a.b = 1`, `a = {b.c = 2}`).

- Mixed arrays: in previous TOML versions array values all had to be of
  the same type; you can now freely mix types, including inline tables.

- Support hex (`0x2f9a`), binary (`0b0110`), and octal (`0o777`)
  literals, and support `nan` and `inf` for floats.

- Support local datetimes, dates, and times. These are dates and times
  without a timezone and are parsed in the local timezone.

- Allow accidental whitespace between backslash and newline in the line
  continuation operator in multi-line basic strings.

There should be no incompatibilities as such; all existing *valid* TOML
files should continue to work. However, the parser previously allowed
the following invalid values:

- It would allow literal control characters in strings.

- It would allow leading zeroes in decimal ints and floats.

Neither of these was ever valid TOML, and are explicitly forbidden by
the specification. But the library erroneously permitted them.

Other changes
-------------
- Set up Go modules.

- Allow escaping the `\`, and allow triple-quotes strings to end with a
  quote (e.g. `x="""x""""`).

- All control characters inside strings are properly escaped when
  encoding.

- Support encoding nested anonymous structs.

- Encode toml.Primitive values.

- You get a more helpful error on UTF-16 files (probably the most common
  non-UTF-8 compatible encoding). Also read over UTF-16 BOM in UTF-8
  files.

- Call `MarshalText` and `UnmarshalText` consistently on all types;
  before this didn't always happen in some cases.

- Allow empty quoted keys (`"" = 1`); silly, but explicitly mentioned as
  valid.

- Don't panic in encoder on unsupported types; return an error instead.

- Don't panic on unclosed inline arrays.

- Add `Decoder` and deprecate `DecodeReader()`; this is more consistent
  with how other decoders tend to work and allows adding decoding options.

- Add `DecodeFS()` for Go 1.16 or newer.

- Avoid creating new functions/allocations in lexSkip; small performance
  improvement.