Consistent determination of servicePath
<!--
1. If you have a question and not a bug/feature request please ask it at http://forum.serverless.com
2. Please check if an issue already exists so there are no duplicates
3. Check out and follow our Guidelines: https://github.com/serverless/serverless/blob/master/CONTRIBUTING.md
4. Fill out the whole template so we have a good overview on the issue
5. Do not remove any section of the template. If something is not applicable leave it empty but leave it in the Issue
6. Please follow the template, otherwise we'll have to ask you to update it
-->

# This is a Bug Report

## Description

CWD is used as where to look for the serverless config (serverless.[json|yml|js|...]) in [validate](https://github.com/serverless/serverless/blob/master/lib/plugins/lib/validate.js#L8) but `servicePath` is used in [PluginManager](https://github.com/serverless/serverless/blob/master/lib/classes/PluginManager.js#L478).

This inconsistency is blowing up integration tests in serverless-artillery

Altering validate.js to read as follows (consistent with the PluginManager) resolves the matter but there is probably a better way to :
```
    const servicePath = this.serverless.config.servicePath || 'x';
    return getServerlessConfigFile(servicePath).then((result) => {
```

For bug reports:
* What went wrong?
We use:
```
    const serverless = new Serverless({
      interactive: false,
      servicePath: impl.findServicePath(),
    })
```
and as per the SLSART codebase, the service path (i.e. serverless.yml in this case) can be a central directory rather than the current working directory.  We therefore observe an error message stating that SLS has to be run in a service directory.

* What did you expect should have happened?

Continue the previous behavior of respecting the servicePath setting

* What was the config you used?

https://github.com/Nordstrom/serverless-artillery/blob/master/lib/lambda/serverless.yml
used via:
https://github.com/Nordstrom/serverless-artillery/blob/master/lib/index.js#L226
as a result of:
https://github.com/Nordstrom/serverless-artillery/blob/monitoring-mode/tests/integration/intro/intro.js#L5

* What stacktrace or error message from your provider did you see?

```
        Deploying Lambda to AWS...

Error: This command can only be run in a Serverless service directory
    at getServerlessConfigFile.then (.../node_modules/serverless/lib/plugins/lib/validate.js:12:23)
From previous event:
    at Deploy.validate (.../node_modules/serverless/lib/plugins/lib/validate.js:8:51)
From previous event:
    at Object.before:deploy:deploy [as hook] (.../node_modules/serverless/lib/plugins/deploy/deploy.js:112:10)
    at BbPromise.reduce (.../node_modules/serverless/lib/classes/PluginManager.js:372:55)
From previous event:
    at PluginManager.invoke (.../node_modules/serverless/lib/classes/PluginManager.js:372:22)
    at PluginManager.run (.../node_modules/serverless/lib/classes/PluginManager.js:403:17)
    at variables.populateService.then (.../node_modules/serverless/lib/Serverless.js:102:33)
    at runCallback (timers.js:672:20)
    at tryOnImmediate (timers.js:645:5)
    at processImmediate [as _immediateCallback] (timers.js:617:5)
From previous event:
    at Serverless.run (.../node_modules/serverless/lib/Serverless.js:89:74)
    at serverless.init.then.then (.../lib/index.js:639:30)
```

## Additional Data

* ***Serverless Framework Version you're using***: master
* ***Operating System***: osx
* ***Stack Trace***: above
* ***Provider Error messages***: n/a