refactor: making client context shared and updating scope specs

I've put the mocks and stubs for client & its related objects into a separate shared client context file.
It will make specs much cleaner and easier to maintain as the interfaces of some of these classes change.  It's essentially a way to isolate some current unknowns.

I've refactored scope specs to use this shared context.