quick refactor to make supporting heterogenous Eventlist better
to_frame() override for attrs and repr_col, also turned off df caching
added some comments
support emtpy EventList()
default logger.all_events to EventList with repr
refactored to allow passing in custom attr funcs, also added class_name
special keyword