Use BlockManagerInterface instead of BlockManager to allow decorated services

Modules such as Drupal Canvas decorate the block_manager service and
replace it with a decorator class. Because Blocks.php type-hints the
constructor argument as the concrete BlockManager class, Symfony's
dependency injection container throws a TypeError when the decorated
service (which implements BlockManagerInterface but is not an instance
of BlockManager) is injected.

Changing the type hint to BlockManagerInterface allows any service that
correctly implements the interface to be injected, restoring
compatibility with modules that decorate block_manager.

--- a/src/Plugin/ContextReaction/Blocks.php
+++ b/src/Plugin/ContextReaction/Blocks.php
@@ -11,7 +11,7 @@
 use Drupal\Core\Cache\Cache;
 use Drupal\Core\Form\FormState;
 use Drupal\Core\Render\Element;
-use Drupal\Core\Block\BlockManager;
+use Drupal\Core\Block\BlockManagerInterface;
 use Drupal\context\ContextInterface;
 use Drupal\context\Form\AjaxFormTrait;
 use Drupal\Core\Form\FormStateInterface;
@@ -119,7 +119,7 @@
   /**
    * The block manager.
    *
-   * @var \Drupal\Core\Block\BlockManager
+   * @var \Drupal\Core\Block\BlockManagerInterface
    */
   protected $blockManager;

@@ -136,7 +136,7 @@
     ContextRepositoryInterface $contextRepository,
     ContextHandlerInterface $contextHandler,
     AccountInterface $account,
-    BlockManager $blockManager,
+    BlockManagerInterface $blockManager,
     EntityTypeManagerInterface $entityTypeManager
   ) {
     parent::__construct($configuration, $pluginId, $pluginDefinition);
