Maze solver "stop" method?

long last= 0;
long interval = 2000; // delay time

These need to be unsigned long not just long.

There are several places where you put this line in your code:

    unsigned long last = millis();

I assume the intent is to update the global variable. Because you included the type in this statement, it actually declares a new local variable within that block of code, which is updated with the return value from millis() and them immediately thrown away as you leave that code block.

If you want to update a variable which has already been declared, you would need to change that code to:

    last = millis();
  if (digitalRead(IndicatorL) == HIGH && digitalRead(IndicatorC) == HIGH && digitalRead(IndicatorR) == HIGH && (now - last < interval)){
    motorL.run(FORWARD);  
    motorR.run(FORWARD);

  }
  else  if (digitalRead(IndicatorL) == HIGH && digitalRead(IndicatorC) == HIGH && digitalRead(IndicatorR) == HIGH && (now - last > interval))  {
    motorL.run(RELEASE);  
    motorR.run(RELEASE);  
  }

These conditions can be written more concisely:

if (digitalRead(IndicatorL) == HIGH && digitalRead(IndicatorC) == HIGH && digitalRead(IndicatorR) == HIGH)
{
    if(millis() - last < interval)
    {
        // timeout has not expired, keep going
        motorL.run(FORWARD);  
        motorR.run(FORWARD);
    }
    else
    {
        // timeout has expired, assume we have reached the end
        motorL.run(RELEASE);  
        motorR.run(RELEASE);  
    }
}