Redesign MemPool to fix memory access alignment bug and allocate all bug

The alignment problem occured only on CPUs not supporting
unaligned access (e.g. some Arm CPUs) when indefinite length
strings were being decoded. It should up as a crash when
running MemPoolTest, AllocAllStringsTest, IndefiniteLengthStringTest
and IndefiniteLengthNestTest.

The fix changes the interface for QCBORDecode_SetUpAllocator()
and simplifies some of the way the string allocators work.

There is also a fix when allocate all strings is turned on.
Decoded items weren't correctly marked as allocated.
diff --git a/test/qcbor_decode_tests.h b/test/qcbor_decode_tests.h
index a7ee0b5..b76b963 100644
--- a/test/qcbor_decode_tests.h
+++ b/test/qcbor_decode_tests.h
@@ -226,4 +226,12 @@
 int MemPoolTest(void);
 
 
+/*
+ Test the setting up of an external string allocator.
+ */
+int SetUpAllocatorTest(void);
+
+
+
+
 #endif /* defined(__QCBOR__qcbort_decode_tests__) */