Abstract storage

Storage abstraction is not done yet however there are huge changes made to the code base to keep them in a separate branch. That branch was related to the storage abstraction. I want to simplify the process of installing and using HangFire. To do this, I want to present support of Microsoft SQL Server as a HangFire storage.

The storage based on Microsoft SQL Server will have some performance penalties compared to Redis one. However, it will greatly simplify the process of installing, because there are a lot of people using SQL Server in their projects. But it is difficult to abstract storage in this way, because there are too many differences between Redis and SQL Server. 

The following work was done:

* Initial storage abstraction. Abstractions are crappy and not ready yet. But Redis-based storage is already working.
* First step of SQL Server support implementation. HangFire can now start and stop with this storage :)

TODO:

* Finalize the abstraction and make final refactoring (including consistent naming).
* Make initial support of Microsoft SQL Server as a storage. All HangFire features should work.
* Write unit-tests for different storages.
* Prepare load-test for the SQL Server storage.