I anticipate a problem with the date fields -- they require complete dates (down to the day), whereas we need to create the option for year, year and month, or year, month, and day, with a range field (for ambiguity).


Actually, this won't be a problem. In the case of knowing the exact date, specify a single date, which is the default. In the case of uncertainty, specifiy a range using the end date to specify that range. For example, if the birthdate is somewhere in the 1890s, specify "01/01/1890" to "12/31/1899" or some such range.