Setup UI - Allow callers to wrap UI in their own page chrome. Clarify response format.
The general idiom for calling SetupController is like this:
```php
$ctrl = \Civi\Setup::instance()->createController()->getCtrl();
$ctrl->setUrls(...);
\Civi\Setup\BasicRunner::run($ctrl);
```
This changes the data exchanged between `BasicRunner` and `SetupController`
to allow more flexible runners. The `BasicRunner` is the only one currently
used by existing installers, so it's drop-in compatible.
Before
------
The `BasicRunner` calls `$ctrl->run(...)` and gets back an array with the response data
(`[0 => $headers, 1 => $body]`).
After
-----
The `BasicRunner` calls `$ctrl->run(...)` and gets back a `SetupResponse`. This
object provides the `[0]` and `[1]` keys (for backward compat), but it's better
to access the object properties (`$headers`, `$body`, etc).
It provides several additional properties - eg `$title`, `$assets`, `$code`.
Technical Details
------------------
This is a drop-in update for anything that uses `BasicRunner`.
Strictly speaking, if one wrote a different runner, it may or may not be
drop-in compatible. But since I don't think there are any others, it's not
really worth spending much energy on verifying.
The bump in `Setup::PROTOCOL` (`1.0` => `1.1`) indicates that old installers
should generally be forward compatible with this protocol. However, if one
writes a new installer and specifically uses the `SetupResponse` type,
then they should assert protocol `1.1`.