Refactored interface

Moved all the common operations into IRepositoryBase leaving the Get and
Delete that accept the primary keys in the main interface of IRepository
and ICompoundKeyRepository.
Added a compound key repository that uses Get(params object[] keys)

So now there are the 2 primary key type where you can define the types
of the keys for better clarity in seeing what it is, then there is a
general one that you don't define the type of the keys up front but can
use as many as you like.

Plenty of code cleanup and refactoring is needed.  Right now there is a
ton of code duplication as I was trying to get it working first.  Will
definitely need to clean it up and combine common code into sub classes.
Then once that is done I may make another version that takes 3 key types
as well.  I may stop there as it will cover most of the use cases I
would think, and if not the general version will work.