Add allocation macros (per platform) and ARM cache flush

If MP_PLAT_ALLOC_EXEC isn't defined, it will fall back to m_new and m_del.
All tests for unix x64 pass.

Fixes issue #840
Sometimes I cross compile and emit the machine code for a different machine (eg on unix x86-64 port I enable thumb emitter and emit the asm thumb code, disassemble, and check it's correct).  The following cache flush won't compile for such cross-compilation mode.  Is it possible to guard it by a macro that checks, eg, for the definition of __arm__?