Variables resolution broken with custom variableSyntax (${deep:0})
<!--
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

PR to follow.

## Description

For bug reports:
* What went wrong?
Users of a custom variable syntax are seeing variable population failures that leave behind `${deep:0...}` artifacts

* What did you expect should have happened?
The variables should render as they previous did

* What was the config you used?
Using this config:
```
service: new-service

provider:
  name: aws
  runtime: nodejs6.10
  variableSyntax: "\\${{([ ~:a-zA-Z0-9._\\'\",\\-\\/\\(\\)]+?)}}"

custom:
  my1stStage: ${{opt:stage}}
  my2ndStage: ${{self:custom.my1stStage}}
```

And running:
```
sls package -s DEV
```

One can reference `.serverless/serverless-state.json` and observe the following:
```
[...]
    "custom": {
      "my1stStage": "DEV",
      "my2ndStage": "${deep:0}"
    },
[...]
```

Very clearly, the expected value would be:
```
[...]
    "custom": {
      "my1stStage": "DEV",
      "my2ndStage": "DEV"
    },
[...]
```

The problem results from the `${deep:0}` variable not complying with the custom syntax.

* What stacktrace or error message from your provider did you see?

N/A

## Additional Data

* ***Serverless Framework Version you're using***: 1.27.0
* ***Operating System***: OSx
* ***Stack Trace***: N/A
* ***Provider Error messages***: N/A
Variables resolution broken with custom variableSyntax (${deep:0})
<!--
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

PR to follow.

## Description

For bug reports:
* What went wrong?
Users of a custom variable syntax are seeing variable population failures that leave behind `${deep:0...}` artifacts

* What did you expect should have happened?
The variables should render as they previous did

* What was the config you used?
Using this config:
```
service: new-service

provider:
  name: aws
  runtime: nodejs6.10
  variableSyntax: "\\${{([ ~:a-zA-Z0-9._\\'\",\\-\\/\\(\\)]+?)}}"

custom:
  my1stStage: ${{opt:stage}}
  my2ndStage: ${{self:custom.my1stStage}}
```

And running:
```
sls package -s DEV
```

One can reference `.serverless/serverless-state.json` and observe the following:
```
[...]
    "custom": {
      "my1stStage": "DEV",
      "my2ndStage": "${deep:0}"
    },
[...]
```

Very clearly, the expected value would be:
```
[...]
    "custom": {
      "my1stStage": "DEV",
      "my2ndStage": "DEV"
    },
[...]
```

The problem results from the `${deep:0}` variable not complying with the custom syntax.

* What stacktrace or error message from your provider did you see?

N/A

## Additional Data

* ***Serverless Framework Version you're using***: 1.27.0
* ***Operating System***: OSx
* ***Stack Trace***: N/A
* ***Provider Error messages***: N/A