Use size_t type for index instead of uint64_t.

This avoids

	warning C4244: 'argument' : conversion from 'uint64_t' to 'unsigned int',
	possible loss of data

when using MSVC and generally seems more reasonable.
Explicitly remove non-existent parser assignment operator.

This silences MSVC

warning C4512: 'cpptoml::parser' : assignment operator could not be generated
Fix out of bound indices in parse::is_date().

Don't access possibly invalid indices in to_match string. This happily
accessed out of bound memory when parsing something as simple as "foo = 1", so
check the string length first, before looking at its contents.
Always print the dates with UTC time zone.

struct tm doesn't contain time zone information on all platforms (notably not
with Microsoft Visual C++ compiler), so using "%Z" format specifier with
strftime() when printing it out is wrong, as the members always contain broken
down UTC time representation, but "%Z" would append the local time zone name.
Make the check for date validity more robust.

This avoid false positives such as recognizing "::::-::-::T--:--:--Z" as a
date -- and then failing to parse it, of course.
Fix typos and improve error messages wording.

Fix some typos in comments and use better wording for the user-visible
errors.
Add line number to parse error messages.

Just saying "Failed to parse" was singularly unhelpful, at least mention at
which line number the error has happened. Perhaps column number reporting
could be added in the future, but the exact position of the error is not
always well-defined, so don't do it for now.

Replace all occurrences of "throw toml_parse_exception{...}" with the calls to
throw_parse_exception(...), this will make it easier to customize the error
reporting later if necessary by updating just this function.
Handle parsing errors in the example.

Aborting on invalid input is not especially user-friendly, even for a simple
example.
Remove unportable and unnecessary time zone fix up code.

The code using setenv("TZ") doesn't compile when using Microsoft Visual C++
compiler as it doesn't have this (POSIX) function. And if it compiled, it
still wouldn't work as changing TZ environment variable doesn't work as
expected by this code under Microsoft Windows. And it seems to be totally
unnecessary anyhow, as we are working with the broken down time representation
which is already in UTC and not time_t anyhow.

So just remove it, not doing this doesn't change struct tm contents at all.
Merge pull request #2 from vadz/msvc-fixes

Build fixes for MSVC 12 (a.k.a. MSVS 2013) compiler.
Merge pull request #3 from vadz/better-error-messages

Better error messages.
Refactor to avoid throwing exceptions unnecessarily.

Don't throw from resolve_qualified() if we are only calling it to find out
whether a key exists or not, there is nothing exceptional if it doesn't.

This does make the function signature rather ugly, but this is the price to
pay to avoid changing the existing code too much while avoiding unnecessary
exceptions which are very annoying in practice when running under debugger as
they trigger breakpoints-on-exception.

Avoiding exceptions in the normal code path should also be much better from
performance point of view.
Merge pull request #5 from vadz/avoid-exceptions

Refactor to avoid throwing exceptions unnecessarily.