Move types and constants shared with the bootloader to seperate crate
This MR moves any relevant constants and types into a seperate in tree crate start
which can be used by the bootloader or any code that needs to launch the RedoxOs Kernel. This may for example also support any 3rd parties to implement code which can directly load the kernel in the future.
Additionally some new documentation has been added to the aarch64 portion.
Some of the constants (in particular the memory map) are statically calculated in the kernel. Since the memory map is intentionally kept in one place i instead defined the constant directly with its expected value in the start
crate. While this is not exactly pretty it seemed the most practical solution for now.
The static_assertions
crate has been added to verify the constants match the expected values and types in the kernel code.