fix(EventService) Properly check input when creating event
feat(Events) Pull event types dynamically from database

Now the `View Events By Type` option on the events page and the `Event Type`
option on the Add Event page will be dynamically updated with event types from
the database. This allows us to create new event types on the fly and also
designate special information for certain event types. For example, we can now
describe an Honors Honor with this structure:

```json
{
    "m0938n0921": {
        "name": "Honors Hour",
        "desc": "Seminars, enriching lectures, and workshops to expand ...",
        "citizenship": {
            "numRequired": 3,
            "per": "semester"
        }
    }
}
```

If the `citizenship` property doesn't exist the event will considered a
'General' event on the Add New Event page.