libfdt: Map FDT_ERR_NOTFOUND to Option::None

Update the API to make use of Option when retrieving a node or property
from a DT, to ensure that client code treats NOTFOUND (a return value
which might not be a hard error) differently from serious error values.

Bug: 255521657
Test: atest vmbase_example.integration_test
Change-Id: I1404cab01f2065b0fed07330b8c1be54bb993680
diff --git a/vmbase/example/src/main.rs b/vmbase/example/src/main.rs
index b305559..bb64651 100644
--- a/vmbase/example/src/main.rs
+++ b/vmbase/example/src/main.rs
@@ -151,14 +151,14 @@
 
     let reader = Fdt::from_slice(fdt).unwrap();
     info!("FDT passed verification.");
-    for reg in reader.memory().unwrap() {
+    for reg in reader.memory().unwrap().unwrap() {
         info!("memory @ {reg:#x?}");
     }
 
     let compatible = CStr::from_bytes_with_nul(b"ns16550a\0").unwrap();
 
     for c in reader.compatible_nodes(compatible).unwrap() {
-        let reg = c.reg().unwrap().next().unwrap();
+        let reg = c.reg().unwrap().unwrap().next().unwrap();
         info!("node compatible with '{}' at {reg:?}", compatible.to_str().unwrap());
     }
 
@@ -167,7 +167,7 @@
     info!("FDT successfully unpacked.");
 
     let path = CStr::from_bytes_with_nul(b"/memory\0").unwrap();
-    let mut node = writer.node_mut(path).unwrap();
+    let mut node = writer.node_mut(path).unwrap().unwrap();
     let name = CStr::from_bytes_with_nul(b"child\0").unwrap();
     let mut child = node.add_subnode(name).unwrap();
     info!("Created subnode '{}/{}'.", path.to_str().unwrap(), name.to_str().unwrap());