Code Review of initial code base

* adding ConfigureAwait to all public entry points so that follow up calls do not end up on the original SynchronizationContext since we do not need to be
* added null validation of all constructor parameters
* renamed ParseJsonAsync -> ReadAsJTokenAsync and now just rely on the configured JsonMediaTypeFormatter to return a propery JToken
* switched from using raw strings to Uris for all Uri manipulation