YT-PYPF-22: Replace projection function mappings with iterables of callable projection objects
---
- Added the `TypeSpecificCallable` abstract class
- Aligned the `TypeFormatter` class to derive from `TypeSpecificCallable`
- Created the `TypeProjection` class deriving from `TypeSpecificCallable`
- Aligned the `FormatOptions` and `PrettyFormatter` classes to properly handle the projections using the new class