To make the barbecue sauce: Heat the oil in a heavy medium saucepan over medium heat, about 3 minutes. Add the onions and sauté until they are just slightly browned, about 6 minutes. Next, add the garlic and sauté for 2 minutes. Then add the green tomatoes, agave nectar, jalapeños, and lemon zest. Let cook until the tomatoes break down and release their juices then the mixture begins to caramelize, stirring occasionally, about 25 minutes. Stir in the vinegar, ketchup, molasses, Worcestershire sauce, salt, and mustard powder. Simmer until the flavors blend and the sauce thickens slightly, stirring occasionally, about 12 minutes. Stir in the lemon juice.
Transfer the sauce to a food processor and blend until smooth. Cool the sauce completely. Makes about 4 cups of barbecue sauce.
To prepare the sandwiches: Place the flank steak in a large resealable plastic bag. Add 1 1/2 cups of the barbecue sauce and turn the meat to coat it all over with the sauce. Seal the bag and refrigerate for at least 8 hours and preferably overnight. Cover the remaining barbecue sauce and refrigerate.
Prepare the barbecue for medium-high heat. Grill the flank steak until an instant-read meat thermometer registers 135 degrees F, rotating every 2 minutes, about 6 minutes per side. Discard the used barbecue sauce. Transfer the steak to a rimmed platter and let rest for 10 minutes.
Meanwhile, spread the butter over the cut sides of the buns and grill the buns, buttered side down, until they are toasted. Rewarm the remaining unused sauce.
Place the flank steak on a cutting board (reserve the accumulated juices on the platter) and cut the steak in half lengthwise, then thinly slice each half crosswise across the grain. Toss the steak slices with the accumulated juices and a spoonful of the warm unused barbecue sauce.
Spoon some of the warmed barbecue sauce over the bun bottoms. Pile the steak slices on the bun bottoms. Drizzle some more barbecue sauce over the meat. Top with the coleslaw then the bun tops and serve immediately.