Upstream pull request

A couple of different changes.

The biggest changes is the addition of Opportunities and throwing the correct REST exceptions depending on the response from Salesforce (e.g. 404 an 403).