Remove getRoomWithDefaults, fix name changing

When editing a room, update_name was not called and after removing a
room's name, the empty custom name was kept instead of reverting to the
proper generated name.
Fix error when JSON request raises Exception

Python exceptions usually don't have toDict...
Fix/cleanup notification email lists
Get rid of JSONStringBridgeMixin
Better alembic filenames, simplified migration tpl

We don't really need a data migration function by default. In most cases
data migrations would be closely related to schema migrations anyway and
thus splitting them in different functions would be overkill. And if
not, we can always create functions as necessary.
Properly check location/room when editing room
Rename columns

Blocking.created_by => created_by_id
Blocking.created_at => created_dt

Photo.small_content => thumbnail
Photo.large_content => data

ReservationOccurrence.start => start_dt
ReservationOccurrence.end => end_dt
ReservationOccurrence.is_sent => notification_sent

Reservation.created_at => created_dt
Reservation.created_by => created_by_id
Reservation.uses_video_conference => uses_vc
Reservation.needs_video_conference_setup => needs_vc_assistance
Reservation.needs_general_assistance => needs_assistance
Reservation.start_date => start_dt
Reservation.end_date => end_dt

NonBookablePeriod.start_date => start_dt
NonBookablePeriod.end_date => end_dt

Room.notification_for_start => notification_before_days
Rename tables

BookableTime => BookableHours
room_bookable_times => room_bookable_hours
Room.bookable_times => bookable_hours

NonBookableDate => NonBookablePeriod
room_nonbookable_dates => room_nonbookable_periods
Room.nonbookable_dates => nonbookable_periods
Remove Room.notification_for_end
Cleaning up equipment

Location has equipment_types
Room has available_equipment
Reservation has used_equipment