Presentation API shim: code refactored to ease readability

The code of the shim is now divided in 3 parts:
1. the part that defines the CastPresentationSession class and associated
functions needed to present Web content on Google Cast devices
2. the part that defines the WindowPresentationSession class and associated
functions needed to present Web content in a separate window (or separate
attached screen if custom build of Chromium is used)
3. the part that implements "navigator.presentation" and delegates to the
right PresentationSession class depending on the underlying context.

The goal of the refactoring is to be able to delimit all the code that is
specific to Google Cast devices support in particular.