Bind a callback to an event

		Params:
			event_name (string):
				Name of the event to bind to
			callback (callable):
				Callback that will be called when the event is triggered
			first (boolean):
				If True, this callback is placed before all the other events already
				registered for this event, otherwise it is placed at the end.

def bind(self, event_name, callback, first = False):
		"""Bind a callback to an event

		Params:
			event_name (string):
				Name of the event to bind to
			callback (callable):
				Callback that will be called when the event is triggered
			first (boolean):
				If True, this callback is placed before all the other events already
				registered for this event, otherwise it is placed at the end.
		"""
		if event_name not in self.handlers:
			self.handlers[event_name] = []

		if first:
			self.handlers[event_name].insert(0, callback)
		else:
			self.handlers[event_name].append(callback)