Convert unit tests to use Boost.Test.

Biggest immediate benefit: memory leak detection.
Fixed memory leaks in enumeration tests.
List headers in project.
Split unit tests into named files.
Make all headers self-contained.
Generate include tests.
Made foreign date format converters const-correct.
Fixed ambiguous overload.
Fix messed up alignment in datetime.h.
Fix conversions between UTC and local time.

The conversion was broken because the local timezone bias (in minutes) was applied to the date (in days) before the bias had been converted into days.  This lead the conversion to produce some pretty bizarre results.
Make local_timezone_bias assert if passed unrecognised bias mode.
Separate the two different ways to treat daylight savings time.

The conversion functions were muddling two different ways of choosing how to treat daylight savings time for datetimes in the local timezone.  In the first, it is calculated from a date and a flag saying whether that date is local or UTC.  In the second, the caller explicitly chooses whether to assume daylight savings is in operation.

The two methods were combined using a single set of flags that tried to do woth parts at the same time along with a date argument that would not be used if the second method was in use.  This made the code very muddled and hard to understand.

This change separates out the two modes as overloads of the existing methods.
Fix date conversion to not base DST on 30 December 1899.

The code is documented as defaulting to calculating DST from the date in the object.  But it decides whether the caller wants the default by testing whether the 'as of' date is invalid.  But the default argument was datetime_t() which is the epoch and is not invalid.  This commit changes the default argument to dt_invalid so the correct behaviour is invoked.
Emulate C++11 scoped enum for datetime_t conversion mode.
Compile with maximum warnings.
Fix constant conditional warning.
Fixed unused parameters and variables.
Fix uninitialised variable use.