Attempt to remove hardcoded CSS classes in views and make it somewhat configurable

Contains two major changes:

### Config hierarchy + inputDefaults

c1e3ba8 reverses the hierarchy of settings in `theme.json`. Instead of

```json
{
    "helpers": {
        "prefixes": {
            "admin": { "Html": {"className": "foo"} }
        }
    }
}
````

The reason is that in the future, we could add more setting types for each route prefix, for example `blocks` settings:

```json
{
    "prefixes": {
        "admin": {
            "helpers": {
                "Form": {
                    "className": "BoostCake.BoostCakeForm",
                    "inputDefaults": {
                        "div": "form-group",
                        "wrapInput": false,
                        "class": "form-control"
                    }
                },
            },
            "blocks": [ "right" ]
        }
    }
}
````

### CSS settings

```json
{
    "settings": {
        "css": {
            "container": "container",
            "row": "row",
            "columnFull": "col-sm-12",
            "columnLeft": "col-sm-8",
            "columnRight": "col-sm-4"
        }
    }
}
```

41c2859fd7 reads in these values from `theme.json`. These values are then sent to views under `$themeSettings` variable.

A new `LayoutHelper::cssClass()` method was added to retrieve configured values.


The rest of the changes mostly deals with replacing hardcoded css classes with these values.