Feature/472 convert config to yml

Converts config to Yml, validates it and makes config easier to parse.
I'd personally turn this into a guard condition by inverting the logic like:
```php
// Success! Return the value
if ($value !== null) {
    return $value;
}

// No value found, but is required!
if ($default === self::REQUIRED_OPTION) {
    throw new Exception("");
}

// No value found, return the default (even if it's NULL).
return $default;
```