Unbind a callback from an event

		Params:
			callback (callable):
				Callback to unbind
			event_name (string):
				If None (default) this callback is removed from every event to
				which it's bound.  If a name is given then it is only removed from
				that event, if it is bound to that event.

def unbind(self, callback, event_name = None):
		"""Unbind a callback from an event

		Params:
			callback (callable):
				Callback to unbind
			event_name (string):
				If None (default) this callback is removed from every event to
				which it's bound.  If a name is given then it is only removed from
				that event, if it is bound to that event.
		"""
		if event_name is None:
			for name in self.handlers.keys():
				self.unbind(callback, name)
			return

		if callback in self.handlers[event_name]:
			self.handlers[event_name].remove(callback)