SSP-1040 Consistent timezone handling for birth dates.

Front- and back-ends can use different timezone, but for a given
layer the timezone handling needs to be consistent for a given
date value (i.e. a date value without a time component). We're
now at least doing this for birth dates, which exhibited the
first concrete bug caused by inconsistent timezone handling.

Quite a bit went into this fix. The General approach for both
date-only and date+time values is written up in some detail at
https://wiki.jasig.org/display/SSP/SSP+Technical+Design%3A+Dates+and+Times

Note that this does include a narrowing operation on person.birth_date
and external_person.birth_date. Docs will need updating.