Add a new Python transaction test.

The test ensures that a snapshot transaction in one session can't see a committed transaction from another session.
An optimization for empty snapshots made concurrent commits visible.
refs #289, #300
whitespace, fix anti-copyright notice.
Include all changes whenever closing any file, not just at connection close.
refs #300
typo
Enhance a comment -- we write checkpoint information, just not
underlying file pages.
If the application does a checkpoint (regardless whether it's named or
internal), a checkpoint by the name must exist.  This is complicated by
the fact that this applies to empty row-store files as well which we
go to some effort to avoid writing.  Ref #301.

Re-work the checkpoint code to skip unmodified objects when closing a
file (whatever checkpoints we have at that point are sufficient), and
to skip unmodified objects when the checkpoint we're taking is named
the same as the last checkpoint we have and we're not deleting other
checkpoints (which might free up space).

Remove the recent change that made the __wt_page_modify_set function
also mark the tree dirty: this is incorrect because the "dirty page"
flag climbs the tree during reconciliation: that doesn't mean the tree
is no longer "clean", the process of checkpointing is what cleans the
tree.

Change the btree handle create functions, and the btree salvage
functions, to set the tree and page dirty flags when instantiating new
pages (it doesn't matter whether we do or not, because currently the
tree flag only matters to the checkpoint function, but it's no longer a
problem either, and it's consistent with the way we handle other "dirty"
operations).
rename the class/test to match the file name
Don't set the tree modified flag inside salvage: we're not going through
the normal checkpoint process that clears that flag, and so on the next
checkpoint we'd potentially have the modified flag set without any dirty
pages.  Make sure we don't get caught again: if we're trying for a
checkpoint, dirty the root page out of sheer raving paranoia.  Ref: #301.
lint, variable not accessed.
bulk-load has to set the tree's dirty flag, otherwise the subsequent
close won't create a checkpoint.
Add memory barriers back in around the tree-dirty flag (btree->modified).
Don't try and abstract out the functions, the barriers are dependent on
where the value is being set/cleared, it needs to be inline code.  #301.
Clear the tree's modified flag as part of opening the handle -- Michael
points out this fixes the problem with salvage being unable to set the
tree modified flag.  Salvage should be able to set the tree modified
flag, this is cleaner.  Ref #301.
Merge branch 'develop' into checkpoint
whitespace
Any file write that isn't a checkpoint should include all updates.
refs #300
Merge pull request #302 from wiredtiger/checkpoint

Create checkpoints on empty tables.
If updates are skipped while evicting a page, give up.
refs #300
Run checkpoints at read-committed rather than snapshot isolation.

Since we don't page in files during eviction, we won't take hazard references
and so the snapshot for the transaction will not be updated like in a normal
read-committed transaction.  All this change may do is avoid conflicts when
updating the metadata.

refs #300
Test setting the isolation level on the conn.open_session call
works as well as setting the isolation level on the txn begin.