When programming flash using the FlashIAP API allow execution from
ram. Many devices require flashing to be done from RAM.
Also allow execution from ram when running the low level flash tests.
On some platforms, the in-application memory is not memory mapped
and therefore cannot be accessed using memcpy.
The flash_read function added to flash_api.h (with a weak
implementation using memcpy in mbed_flash_api.c) can be used for
reading data from areas that are not memory mapped.
Flash IAP that provides erase/read/program to an internal API. It
invokes flash HAL functions.
FlashIAP checks for alignments for erase and program. HAL functions
do not, to avoid duplication per target implementation.