Split PurgeOldData() into smaller transactions
Purging old message ids is now batched.
QueueManager logs purges at INFO.
Added QueueManagerConfiguration to give more control over purging.  Purging is batched to prevent VersionStoreOutOfMemory errors.
Fixed a test to work with .net 3.5