Refactor Xlat error handling

Updating XlatError variants and change it to use thiserror. Handle
allocation errors when allocating pages for translation tables.

Signed-off-by: Imre Kis <imre.kis@arm.com>
Change-Id: I6b039d4c6c8481e66ccb838514053e9dc8d99e1c
diff --git a/src/block.rs b/src/block.rs
index e80617b..59613a6 100644
--- a/src/block.rs
+++ b/src/block.rs
@@ -3,9 +3,6 @@
 
 use core::fmt;
 
-use alloc::format;
-use alloc::string::ToString;
-
 use super::{
     address::{PhysicalAddress, VirtualAddress},
     TranslationGranule, XlatError,
@@ -51,16 +48,11 @@
         let min_granule_mask = granule.block_size_at_level(3) - 1;
 
         if length == 0 {
-            return Err(XlatError::InvalidParameterError(
-                "Length cannot be 0".to_string(),
-            ));
+            return Err(XlatError::InvalidParameterError("Length cannot be 0"));
         }
 
         if (pa.0 | va.0 | length) & min_granule_mask != 0 {
-            return Err(XlatError::InvalidParameterError(format!(
-                "Addresses and length must be aligned {:#08x} {:#08x} {:#x} {:#x}",
-                pa.0, va.0, length, min_granule_mask
-            )));
+            return Err(XlatError::AlignmentError(pa, va, length, min_granule_mask));
         }
 
         Ok(Self {