Implement :until_executed deduplication strategy

While working on POC - Image Resizing: Resizing via Sidekiq, we needed to introduce new :until_executed deduplication strategy which locks until the previously scheduled job finishes (gitlab-com/gl-infra/scalability#195).

until_executed - Lock until the previously scheduled job finishes, it should prevent background jobs to be running simultaneously multiple times.

It's a good idea to merge this strategy, it can be useful elsewhere