Feature/canvas client methods

Create a client package with auth, session, utility methods, and base methods split into separate modules.  Added tests for each module.
What happens here if a single application uses the SDK in multiple places? It looks like this pattern requires that all SDK calls have the same value for MAX_RETRIES.