Add some Rust-style Result/Option types, based on TartanLlama's expected, optional classes. There's std::optional of course, but we can't depend on C++17 yet.