This allows us to see the contents of the SmallVector just like std::vector and also adds a summary string that shows the size of the array.
For llvm::Optional, the value will show as llvm::None when it has no value, or it will show the value of the type T.
For llvm::Error or, it will show the std::error_code as a structure or the value if it has a value.
For llvm::Expected, it will show the dynamic classname of the contained error, or the value.
I believe it's necessary to anchor these regexes to avoid them matching things like std::vector<llvm::Optional<T>>