Backend: Create Entry::Node classes for spec

Problem

We need a way to produce a stable hash from CI config spec entries.

Proposed solution

Let's use the existing pattern of defining subclasses of Entry::Node that validate and normalize CI configurations.

We can create Gitlab::Ci::Config::Header::Root as the entry point for validating the header document in a multi-doc CI YAML.

Edited by Fabio Pitino