Add std::copy specialization for tpie::array iterators (#31)
Merge branch 'arraycopy'. Closes #31.
Use atomic integers to keep track of used memory.

Previously, we used a memory manager mutex to protect the m_used
variable. This mutex is now only declared and used when TPIE_NDEBUG is
not defined, i.e. in debug builds.

Add atomic_int_base and atomic_int implementations for Linux and
Windows. Incidentally, the code for the Windows platform is the same on
32-bit and 64-bit, contrary to what one might think with the existence
of additional functions in the API named InterlockedExchangeAdd64 and
InterlockedExchangeSubtract64. It turns out that the non-64 functions
accept a size_t on both 32-bit and 64-bit which is what we want.
Merge branch 'nonlockingmemory'. Closes #36.
Turn tp_asserts into hard checks/exceptions in pipelining.

This serves two purposes - first of all, this is an inexpensive, rarely
performed check, and an error we actually want to catch (misusing
pipelining tokens). In addition to that, Clang was complaining about an
unused private attribute when compiling with TPIE_NDEBUG.