Nit: Avoid undefined behavior.
Initialize version values to 0.
Add relax_fence() to the lock() function.

This avoids deadlock.
Maintain true_array_state.

That's atomic operations for updating after commit.
Correct ArrayReader::check().
Merge pull request #1 from kohler/updates

Updates
some fixes
add fence for atomic version load (not totally sure if I added the fence correctly, but it does keep my machine from spinning
fix bug from hell. if we update version number and then value on install, we allow for atomic reads, but also allow validation of stale reads. still need to think about what the best solution is though
cleanup
more cleanup, s/TransState/Transaction/, Reader/WriterData structs
add Transaction.hh (renamed from TransState.hh)
update Makefile to account for .hh's and have some more nice features
add very first draft of abort, afterT, etc.
s/N/ARRAY_SZ/
implement version numbers wrapping around (tested successfully with an 8 bit version number)
combine Reader and WriterData
remove UID and is_locked calls. We now require that the first word in a TransData has a unique ordering defined
inline comparison operators
remove stray UID method