Add way to get YouTube metadata that doesn't require a session cookie

Description

The Video Player XBlock will sometimes make API calls to `/couses/yt_video_metadata`, a REST API endpoint that in turn loads video metadata from YouTube using the configured `settings.YOUTUBE_API_KEY`.

However, in the Blockstore-based XBlock runtime, we are running XBlocks in a secure sandbox, and the user's browser cannot pass session cookies when calling REST API endpoints. So currently, the video XBlock tries to request YouTube metadata from that API endpoint, but it fails if run within such a sandbox.

The existing API also doesn't work for anonymous users (users who are allowed to see video XBlocks but who have not logged in to an LMS user account).

This PR updates the Video XBlock so that it can use a handler to load the data from YouTube instead of a generic REST API. This works well in the new runtime, because it has code to support calling handlers within the sandbox, including by anonymous users.

I also fixed a bug where on a default devstack, the endpoint will try calling YouTube using `PUT_YOUR_API_KEY_HERE` as an API key, and get a "bad request" error from YouTube.

The code could be re-organized by moving things around, but I've left everything as-is for now to keep the diff as small as possible.

Test instructions:

1. Go to https://console.developers.google.com/apis/credentials and set up an unrestricted YouTube API key. Put it into `lms/envs/private.py` as `YOUTUBE_API_KEY`. Restart the LMS.
1. Go to http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/courseware/d8a6192ade314473a78242dfeedfbf5b/edx_introduction/1
1. Make sure you do not see "Unable to get youtube video metadata. Some video metadata may be unavailable." in the JS console, and make sure that the video playback slider is in the position where you last played the video.
1. If you have Blockstore and Ramshackle set up, go to http://localhost:18010/ramshackle/ and find or create a video block in a content library. Click on its *Learn* tab (since we haven't configured the API key in Studio).
1. Make sure you do not see "Unable to get youtube video metadata. Some video metadata may be unavailable." in the JS console, and make sure that the video playback slider is in the position where you last played the video.

Assignee

Unassigned

Reporter

Open Source Pull Request Bot

Labels

Contributor Name

Braden MacDonald

Repo

edx/edx-platform

Customer

Epic Link

None

OSCM Assignee

None

Platform Map Area (Levels 1 & 2)

Developer Experiences

Platform Map Area (Levels 3 & 4)

None

Priority

Unset
Configure