This patch makes it easier for users when they want to use validated
lookup on DenseMap/StringMap as a composable C++ expression. For
instance:
// instead of if (auto val = map.lookup(key)) return val; assert("..."); // we can write return map.at(key);
Just a question: would it be better to return const ValueT & like std::map::at would? Do we also want a non-const version of this?