Resolve #74 - Add IQuery<T> interface for components that provide queries

This is a simple abstraction to a data-source.  It does not provide any
functionality but it can solve some issues where access to the data-source
is provided via an extension method (thus making it difficult to mock).