add specs for Addon::Deploy::Config
Deprecate nested hash dsl, instead use options given on `on: branch`

We currently support the following syntax.

1. Config for a single deployment target:

```
deploy:
  provider: s3
  app_id: 1
  access_key: one
  skip_cleanup: true
  on:
    branch: production
```

2. Multiple targets given as an array:

```
deploy:
  - provider: s3
    app_id: 1
    access_key: one
    skip_cleanup: true
    on:
      branch: production

  - provider: s3
    app_id: 2
    access_key: two
    skip_cleanup: true
    on:
      branch: staging
```

3. Multiple targets given as N nested hashes:

```
deploy:
  provider: s3
  skip_cleanup: true
  app_id:
    staging: 1
    production: 2
  access_key:
    staging: one
    production: two
```

While 1. and 2. are fine, there are a couple drawbacks to 3., most importantly
it does not allow using nested hashes for anything else.

This change deprecates 3. and introduces the following new syntax instead. This
new syntax groups branch specific config options under the branch names given
in the `:on` hash. This is more straight-forward and more obvious to the user,
it frees up hashes to be used for other purposes in future, and it is less
error prone implementation-wise.

```
deploy:
  provider: s3
  skip_cleanup: true
  on:
    branch:
      production:
        app_id: 1
        access_key: one
      staging:
        app_id: 2
        access_key: two
```

Syntax 3. is deprectated, meaning that it still works. In order to communicate
the deprecation to the user the deploy script will output a deprecation message
to the logs.
introduce Deprecation, use it in Addon::Deploy::Config and Script::ObjectiveC