Ability to clear the cache across all repositories

Since we are needing to store a global counter that is used in all cache
keys, we have to do that in different ways depending on what the server
setup is.  If the code is hosted in a single server environment, we can
use a simple static property, while if we are in a cloud or server farm
environment we would need to use a distributed cache like redis or
memcached to hold this value so that it is the same across all servers.
Therefore if the user needs access to Cache.ClearAll() they will need to
set the Cache.CachePrefixManager property.
Merge branch 'master' of https://github.com/MikeCer/SharpRepository into PR-80-MikeCer
Multiple sorting properties

Now you can do

var sortingOptions = new SortingOptions<Contact>("LastName");
sortingOptions.ThenSortBy("FirstName")

Fixes #81
Added methods to ISpecification so we could return that instead of a Specificaiton object

Also made static methods for creating a new specification from 2
specifications

var spec = Specification.Add(new Spec1(), new Spec2())

or

var spec = Specification.Add(x => x.IsActive, x => x.UserTypeId = 1)
Cleaned up XmlRepository

For some reason, previously we needed to clone the internal list before
using it for the queries, but that didn't seem right anymore.  So I
removed it and made sure all tests still pass.
DocumentStore and Session made protected instead of private

This will allow users to inherit from RavenDbRepository to get access to
the Session and make changes like using optimistic concurrency.  This
may not be the final solution but it fits with how the EF5 DbContext is
made available as well.
Changed specific private items to protected for MongoDb and Db4o repositories

Keeping consistent with Ef5 and RavenDb
Removed some hard-coded chace prefix

They all should be using the DefaultRepositoryConventions.CachePrefix
and now they are.
Introduced an automapping primary key feature

Automapping primary key feature on mongo db repository base using two
internal dictionaries as conversion tables
Merge remote-tracking branch 'upstream/master'

Conflicts:
	SharpRepository.MongoDbRepository/MongoDbRepositoryBase.cs
Changed specific private items to protected