SPARC: add BSP specific error handler

Instead of calling the system call TA instruction directly it
is better paractise to isolate the trap implementation to the
system call functions.

BSP_fatal_exit() is added.
SPARC: Fatal_halt use source and exit codes

The Fatal_halt handler now have two options, either halt
as before or enter system error state to return to
debugger or simulator. The exit-code is now also
propagated to the debugger which is very useful for
testing.

The CPU_Fatal_halt handler was split up into two, since
the only the LEON3 support the CPU power down.

The LEON3 halt now uses the power-down instruction to save
CPU power. This doesn't stop a potential watch-dog timer
from expiring.
LEON3: use CPU_Fatal_halt for halt

By removing the bsp_reset() mechanism and instead relying on the
CPU_Fatal_halt() routine SMP and single-core can halt by updating
the _Internal_errors_What_happened structure and set the state to
SYSTEM_STATE_TERMINATED (the generic way). This will be better
for test scripts and debugger that can generically look into why
the OS stopped.

For SMP systems, only the fatal-reporting CPU waits until all other
CPUs are powered down (with a time out of one clock tick). The
reason why a fatal stop happend may be because CPU0 was soft-locked
up so we can never trust that CPU0 should do the halt for us.
erc32,leon2: replace bsp_reset with SPARC fatal handler

Now that a SPARC fatal handler is defined, we no longer
need the BSP specific reset routine.