Feature/oauth retry

Changes canvas SDK calls to raise NewTokenNeeded exception on unauthorized error which will prompt the oauth middleware to begin the token dance anew.

Updates tests.
Updated