* Implement GetContentTypeAliasForType which will replace the need for .OfType<T>();
* Refactor EnumerateAncestorsOrSelfInternal to be generic and extracting checks
* Add types to implementation referencing the old non-generic method
* Using
* Replace Ancestors.OfType<T> implementation
* Refactor EnumerateDescendantsOrSelfInternal to be generic
* Fixing references by adding IPublishedContent type param
* Cleanup + removing unused method
* Replace Descendants.OfType<T> implementation
* Remove unnecessary enumeration
* Updating Children.OfType<T>() implementation
* Adding correct types
* Fixing SiblingsAndSelf implementation
* Refactor TryYieldSelfOfType
* Remove nested checks
* Add comments and retrieval of content type alias from T in the private helper methods
* Simplify implementation based on review comments
* Add case when you get all root keys without a type
* Refactoring
* Renaming + review comments
* Rewrite SiblingsAndSelf
---------
Co-authored-by: kjac <kja@umbraco.dk>