def position_listener(listener)
      unless listener.class.name.include?("Listener")
        listener = PositionListener.new(listener)
      end
      register_event(:position_changed , listener)
    end
def position_listener(listener)
      unless listener.class.name.include?("Listener")
        listener = PositionListener.new(listener)
      end
      register_event(:position_changed , listener)
    end
initialize with a given object, first parameter
 The object will be the key in global position map

 The actual position starts as -1 (invalid)
 utility to register events of type :position_changed
 can give an object and a PositionListener will be created for it