Add breakpoint support to MemorySim

The memory simulator can now keep a list of breakpoints associated with
each memory area and then compare on memory reads to throw a
hardwareBreakpointException if the read is to a breakpoint address.