Allow override of computing store key value 

Added a `ComputeStoreKey` method in `ThrottlingHandler` which handles generating the store key. This value is what's passed to `ComputeHash`.

The intent of this is to allow for using the actual throttle key generated as the store key (example in Redis). This doesn't breaking existing functionality.

I also refactored some of the code. See the latest commit titled 'Refactor code to increase readability'.