Adding an overload to support a common Autowired use case

CoreContext::Snoop is used directly with an Autowired field very often, but unfortunately an implicit cast from Autowired to std::shared_ptr is not possible in a template context in cases where multiple cast operators are available.

This fix includes a convenience overload which matches Autowired<T>, as well as a use case unit test to guard this against regressions.