new `strike_out` DSL method for blocking all requests from repeatedly malicious sources

This adds a new feature to Rack::Attack - to identify malicious activity ("strikes"), against some value (e.g. IP address), and then ban that value once a certain number of strikes have been hit within a specified period.

The metaphor is like striking out in baseball - you can swing at the ball, and play the game with a few strikes, but once you get 3 strikes, you're out.

This is similar to `throttle`, but instead of just throttling requests that match some condition, this blocks ALL requests once a few have matched the condition.

We've used this technique very successfully to mitigate a penetration testing tool that had been hammering our site for days, running from hundreds of distributed IP addresses (guessing a botnet or similar). Our initial implementation used hand rolled count/blocking cache logic within a regular `blacklist` block. However the code was cumbersome, so I extracted the logic out into a new DSL method in Rack::Attack instead.

This action results in slightly more request overhead and cache resource usage than `blacklist` or `throttle` usage (as it hits the cache almost every request), however we've been handling this with ~8000rpm happily on a single memcached instance. In our case, the blocking of the spammy penetration test requests MORE than made up for it.

A couple of other tweaks
- I also added github flavoured code blocks in the README
- I refactored the custom handling of Redis stores in `Rack::Attack::Cache` into a separate `Rack::Attack::StoreProxy` class. This was to implement `read` and `write` methods on `Cache` (used by `strike_out`) without having to bloat the code with lots of `if redis blah` checks.