Replacement for AVR libc ATOMIC_BLOCK macros, now for DUE and other platforms.

The only caveat (as far as I can tell) is placement. Constructors are called in order and destructors in reverse order. If a different class constructor (or destructor) has to be protected, yours has to be first in the block...

{
  NonAtomicBlock< Atomic_Force > a_NoBlock;
  SuperHardwareThingy aThingy;  // Constructor accesses hardware so it must be protected.  It is protected because it comes after the line above.
}

If accidentally reversed, disaster ensues...

{
  SuperHardwareThingy aThingy;  // Constructor accesses hardware so it must be protected.  Oops.
  NonAtomicBlock< Atomic_Force > a_NoBlock;
}

The Libc macro does not have the same potential problem.