EZP-23441: IO url decorators configuration

> Based on #1017 
> [EZP-23441](http://jira.ez.no/browse/EZP-23441)
> [Specifications](https://gist.github.com/bdunogier/abb938de8be8c77ea69a)

Makes it possible to set the prefix for IO uris at siteaccess level. Other siteacces level variables can be used in the configuration.

Absolute prefixes to other hosts are also possible, and will work with legacy data (as long as the file is available from this uri).

### Changes

#### Settings
Most of the changes are about the ConfigResolver:
- allow dynamic settings in semantic config (added for a specific setting)
- allow complex dynamic settings (`$var_dir$/$storage_dir$`).

Complex settings has been added as part of the CoreBundle. Dynamic settings in semantic config is only part of the IOBundle for now, as it is a bit rough around the edges (but should be possible to move it up to the CoreBundle with a bit of work).

#### url_decorator services
There are now two main url decorators: the default one, and a legacy one. The legacy one is used in the Legacy Converter, via an UrlRedecorator,  to convert the system's uris to the format it requires.

## Configuration example
```
ezpublish:
  system:
    default:
      io:
        url_prefix: "http://static.site.com/$var_dir$/$storage_dir$"
```

## TODO
- [ ] Add specs to PR
- [ ] url or uri ?
- [ ] Re-issue PR to master
Okay, I know.

When iterating over scopes, we are looking for let's say the io_prefix, set in default to `$var_dir$/$storage_dir$`.  For each scope, we check if either `var_dir` or `storage_dir` have a value set. If there is one, we add $io_prefix$ to this scope.

But if one of the dynamic parameters specify a scope, and that the specified scope is the current one, we don't have to write that parameter to the current scope, since it will have the current scope's value in the default scope... :p

Typically:
```
default:
  io_prefix: "$var_dir$/$storage_dir$"
  var_dir: var
  storage_dir: storage

ezdemo_site_group:
  var_dir: "var/ezdemo_site"
```

With complex settings added to their dependencies' scopes, we end up in the container with:
```
ezsettings.default.io_prefix: "var/storage"
ezsettings.default.var_dir: "var"
ezsettings.default.storage_dir: "storage"

ezsettings.ezdemo_site.var_dir: "var/ezdemo_site"
# This has been added by the dependencies thing, and statically interpreted
ezsettings.ezdemo_site.io_prefix: "var/ezdemo_site/storage"
```

If we had not, we would only have had the default value, and would have been unable to get the correct value.