moved projection logic into service
- killed extension methods
- added to container
- Type discovery is lazy-cached
Updated SpecificationService to use ProjectionCache