Compares the order in which two spies were called

        E.g.
            spy_a()
            spy_b()
            spy_a.calledBefore(spy_b) # True
            spy_b.calledBefore(spy_a) # False
            spy_a()
            spy_b.calledBefore(spy_a) # True

        Args: a Spy to compare with
        Return: Boolean True if this spy's first call was called before the given spy's last call

def calledBefore(self, spy): #pylint: disable=invalid-name
        """
        Compares the order in which two spies were called

        E.g.
            spy_a()
            spy_b()
            spy_a.calledBefore(spy_b) # True
            spy_b.calledBefore(spy_a) # False
            spy_a()
            spy_b.calledBefore(spy_a) # True

        Args: a Spy to compare with
        Return: Boolean True if this spy's first call was called before the given spy's last call
        """
        this_call = self.firstCall if self.firstCall is not None else False
        given_call = spy.lastCall if spy.lastCall is not None else False
        return (this_call and not given_call) or (this_call and given_call and this_call.callId < given_call.callId)