Add events::event_registry notification system

The event_registry is a publish/subscribe notification system
with a 1:N relationship of event:subscriber. Subscriptions and
consequently publications are strongly typed.

Example usage is highlighted in the events_test.cpp test case
within test_application.

Short example:

  struct unit_death {
    static const char* type_id() { return "ud"; }
    int num_units_destroyed;
  }

  event_registry* ev = ...
  ev->subscribe<unit_death>([](const unit_death& data)
  {
    std::cout << data.num_units_destroyed;
  });

  unit_death ud = { 5; }
  ev->publish(ud);
Merge branch 'events'