Handle child classes that are unlisted in parent discriminator maps

For embedded/referenced documents: if a child class has a discriminator field but is not present in the parent class' map, its FQCN should be used as the discriminator. This is necessary to ensure that the proper embedded/referenced class is created during hydration.

For top-level documents, we can rely on the original ClassMetadataInfo::hasDiscriminator() method, which would only store a discriminator if both the field and mapping are set. This is acceptable because the class name is known when executing a query. An edge case occurs when looking up an unmapped child class by the parent class name, as DocumentPersister::addDiscriminatorToPreparedQuery() will add discriminator criteria that ends up excluding the unmapped child class. A possible fix for that would be including all known, unmapped child classes within the discriminator field's $in criteria.

Fixes #788.