GitLab: Pass project and user token to the remote host object

Remote objects don't need to be passed the user token and project namespace so
much. It is better to pass these when the object is created.

Removing namespace, project and token from all remote object method calls is
next. This next change will break the current Remote Object interface.
Removed passing project and user config to remote

Important changes:

* MergeRequest no longer needs: namespace, project and user.token
* Remote Host objects (i.e. GitLab) no longer need to be passed
  namespace, project and user.token
* Remote Host objects now pass both the URL and the HEADER to MergeRequest
Merge branch 'remote-reworking' into develop

MergeRequest no longer requires Project or User config, instead Remote host
objects require them (i.e. GitLab). All methods which required these now get
get them from self.

Remote objects now pass both the url and header when get_merge_request_url()
and get_merge_requests_url()
Improved the MergeRequest to Remote interface.