Introducing ProfileRequestCoordinator

Responsible for converting an Orcid::ProfileRequest into an
Orcid::Profile.

The Orcid::ProfileRequest object was doing too many things (i.e.
persisting the profile request then handling the remote interaction
with orcid.org).

I'm trying to tease apart the offline coordinator for the profile
request. Basically separating the persistence of the initial request
to processing that persisted request.

Also, this pull request includes adjusting Orcid exceptions
inheritance.

I want to provide a base error from which Orcid errors are built from.
That way, someone could feasibly rescue an Orcid::BaseError exception
and handle in a uniform manner.