Caching strategy cleanup

Fixes #48

Common base class for many of the redundant logic
Ability to disable caching

Fixes #49

Now you can use IRepository.CachingEnabled = false to temporarily
disable caching if needed.
Overloaded IRepository<T> to be IRepository<T,int>

This allows the use of IRepository<Contact> repos = new
InMemoryRepository<Contact>() instead of having to define
IRepository<Contact,int> even when using the default version of the
class where int isn't needed.

Fixes #41
Small fix for CacheEnabled flag
Possbile solution to issue #50 by turning off dynamci proxy creation if caching is used

But not sure about it yet so have it commented out for now while I think
it through
Added TSortKey to the PagingOptions ToString method

Also updated assembly version info to 1.1.2.1
Nuget package 1.1.2.1
Expose CacheUsed on IRepository
Create CacheRepository
Some files didn't get added to project file
Fix obsolete warnings for MongoDb

Changed from MongoServer.Create(connectionString) to new
MongoClient(connectionString).GetServer() as is the new preferred way of
doing it.