crt: Rework the crt code to support relocatable IVTs
This has a number of changes to cleanup the startup code slightly and to use the new SPR_KAISB feature.
- Split crt0.s into crt0.s and crt1.s with crt0.s only initializing the .TOC. pointer (%r2) and the stack pointer (%r1).
- Split crt0.s into crt0.s and ivt.s with ivt.s containing all interrupt related code.
- Move exceptions to SRAM
- Remove __isr_address as this can now be handled by SPR_KAISB
- Replace LOAD_IMM64 with LOAD_IMM32 as the microwatt only has <4G of physical address space.
- Enable linting with FlexeLint on crt1.s