Add ICachingProvider

part of #8
Improve ICacheProvider interface

part of #8
Rename to ICachingService

part of 8
Add Memory and Redis caching service and tests
Add memory cache testing for clear and set
Add memory caching testing for get and contains
Add memory caching testing for incr and decr
fix variable name in test
Add memory caching test for getAll
Rename to RemoveAll
Add memory caching test for Remove and RemoveAll
Refactor ICachingService interface

- Remove return value on Set operations as it always succeeds
- Refactor method signature on SetAll to IEnumerable<KeyValuePairs<string, T>> instead of IDictionary<string, T>
Add memory caching test for SetAll
Refactor ICachingService interface

- Change SetIfNotExist to Add and SetAllIfNotExist to AddAll
- Fix the documentation on Set and Add operation to make the actual
behaviour more clear
Update memory cache set tests

tests to make sure memory cache updates the result of cached value
Update memory cache SetAll tests

Test to make sure SetAll can update cached item value if exist
Refactor memory cache tests
Add memory caching test for Add
Add memory caching test for AddAll
Add all functions except AddAll(keyvals, sliding)