Fix EZP-23025: Page field type Block can't be rendered using ESI strategy

This PR resolves issue https://jira.ez.no/browse/EZP-23025

`PageController::viewBlock()` accepts Block object as first argument, which does not work when using real reverse proxy (Varnish). In order not to introduce BC break, this implements a new controller action `viewBlockById()` which accepts Block id instead of Block object and therefore is usable with ESI strategy in all contexts.

The fix required adding `PageService::getBlockById()` method, which loads the Block in a bit roundabout way. Reason for this is that complete Block data can't be loaded from `ezm_block` table alone, instead it needs to be loaded from the XML stored in the field value. This is then done by iterating through fields of the Content of the Location pointed to by `ezm_block.node_id`.

Tests: unit tests and manual tests with Varnish.
@andrerom You're right, I replaced `getLocationIdByBlockId` with `getContentIdByBlockId` in https://github.com/ezsystems/ezpublish-kernel/commit/2b8ce3c0aa4bb090646666831648dd92f010d1bd.
Also renamed `getBlockById()` to simply `loadBlock()`, to be in-line with the rest of the Repository service methods: https://github.com/ezsystems/ezpublish-kernel/commit/23b01967fb4ab16b75dd26ca2aee4616f52bcbe0.