EventManager.apply(events) -> Takes an object with methods, and applies
        them to EventManager.
        Example:
            class TestEvents(object):
                @staticmethod
                def test_method():
                    pass

            e = TestEvents()
            em = EventManager()
            em.apply(e)
            # em now has an event called test_method,
            # and e.test_method as handler.

def apply(self, events):
        """
        EventManager.apply(events) -> Takes an object with methods, and applies
        them to EventManager.
        Example:
            class TestEvents(object):
                @staticmethod
                def test_method():
                    pass

            e = TestEvents()
            em = EventManager()
            em.apply(e)
            # em now has an event called test_method,
            # and e.test_method as handler."""
        for method in dir(events):
            # Skip attributes
            if not callable(getattr(events, method)):
                continue
            # Skip "trash" functions
            if method.startswith("_"):
                continue

            if not hasattr(self, method):  # Didn't have such an event already
                self[method] = Event()  # So we create it

            self[method].add_handler(getattr(events, method))