Enable exact birthdates

Adds support for collecting the exact birthdate from attendees. Fixes #586.

The database on live/staging servers will need the "birthdate" column added to the Attendees table and the AgeGroups table added before this code can be used on them.
This is an area where it would probably be slightly easier if ``AgeGroup`` wasn't a database table and was instead a set of config options, possibly with some utility classes.  But never fear, we can still do this even if we keep ``age_group`` as a foreign key into a database table!

My recommended approach in that case would be to add a method to ``SessionMixin`` called ``age_group_for_birthdate`` so that we can write a block of code here that looks like this:

```python
with Session() as session:
    age_group = session.age_group_for_birthdate(attendee.birthdate)
    if not age_group:
        return 'Your birthday is invalid.  Seriously did you say you were over 100 or something?'
    elif not age_group.can_register:
        return 'Attendees cannot be ' + age_group.desc
```

Note that it's perfectly okay to create a new ``Session`` object even if we happen to have another one active for our ``Attendee`` object because we're not linking two objects from different sessions, only doing a lookup and validation.