Catch memory faults when dereferencing PC

Previously the MRI debug monitor would generate memory faults when
the current PC was pointing to invalid memory and it tried to access
the contents of the current instruction via:
  getFirstHalfWordOfCurrentInstruction()
  getSecondHalfWordOfCurrentInstruction()
The code now throws an exception in these cases and code was added to
catch this exception and default the behaviour that best makes sense
when the PC isn't valid:
  For example Platform_AdvanceProgramCounterToNextInstruction() does
  nothing if the PC is already pointing to invalid memory.

Once this fix was made, the pinkysim BL tests which use the maximum
negative and positive offsets now function as expected.  Previously
they would leave the system in a state where it though good memory
access requests had generated a fault when it was actually the internal
reading of the current instruction (at an invalid address) that
generated the fault.
Refactor previous commit to reduce code duplication

Introduced a throwingMemRead16() static function which can be called
from both getFirstHalfWordOfCurrentInstruction() and
getSecondHalfWordOfCurrentInstruction() to detect memory faults during
half-word reads and throw if such a fault is encountered.
Enable single stepping over SVC instructions

Previously single stepping over a SVC instruction would result in a
hard fault because MRI would issue the single step with the priority
boosted to a level which wouldn't allow the SVC handler to run.

The code now detects this scenario and just sets a hardware breakpoint
on the SVC_Handler entry point and continues execution instead of
single stepping.  This does mean that other interrupt handlers will
get a chance to run as well but in most cases the user will never
notice this unless they have breakpoints set in those other handlers.
I tests this code out and GDB can now step into a SVC handler and back
out with no issues.
Refactor to remove Platform_IsCurrentInstructionHardcodedBreakpoint

I have moved this functionality into Platform_TypeOfCurrentInstruction
so that I have one less function to expose from the Platform API.