Handle empty slots

It is possible that there will be blank slots in the schedule. When this
happens, failing to set the slot's `content_override` to one or more
spaces will cause the page to break, raising `UndefinedError`. By
checking for the presence of a presentation associated with the slot
first, the exception can be avoided and the page will render correctly.
Don't allow presentations without talks

As part of making the schedule page handle empty slots better, the
`Presentation.talk_id` field is no longer allowed to be null.
`talk_id` was allowed to be null because `content_override` originally
belonged to `Presentation`. Now that it is part of `Slot`, a
presentation has no reason not to have a talk.
Merge pull request #65 from PyGotham/empty-slots

Empty slots