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

***Note: Edited after rebase***

Contains two major changes:

### Config hierarchy + inputDefaults

9dbb44efb1390203e6095308ef59b0b8c1b6cc4d reverses the hierarchy of settings in `theme.json` and stores config values under a new `settings` key.

The original format was:

    `helpers.prefixes.<prefix>.<helperName>.<helperSettings>`

The new hierarchy is:

    `settings.prefixes.<prefix>.helpers.<helperName>.<helperSettings>`

For example, instead of

```json
{
    "helpers": {
        "prefixes": {
            "admin": { "Html": {"className": "foo"} }
        }
    }
}
````
to

```json
{
    "settings": {
        "prefixes": {
            "admin": {
                "helpers": {
                    "Form": {
                        "className": "BoostCake.BoostCakeForm",
                        "inputDefaults": {
                            "div": "form-group",
                            "wrapInput": false,
                            "class": "form-control"
                        }
                    },
                },
                "blocks": [ "right" ]
            }
        }
    }
}
````

The reason is that in the future, we could add more setting types for each route prefix, for example `blocks` settings:


### CSS settings

```json
{
    "settings": {
        "css": {
            "container": "container",
            "row": "row",
            "columnFull": "col-sm-12",
            "columnLeft": "col-sm-8",
            "columnRight": "col-sm-4"
        }
    }
}
```

db0cb39af8ff2ad7e5be53e3e2afc8a757cde90e 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.