built-in server: exit when docroot does not exist

When the server:run command is run with an invalid document root
directory (for example, when being in the app directory and not
changing the document root to ../web/), the command crashes on Windows
with a 267 exit code. On Linux, the server starts but just publishes
internal server errors.
fixed whitespace in Twig form template
[DependencyInjection] fixed missing 'factory-class' attribute in XmlDumper output

Symfony\Component\DependencyInjection\Dumper\XmlDumper didn't write 'factory-class' XML attribute for definitions on which setFactoryClass() was called.

This caused the Container[Builder] to throw an exception when the relevant service is being requested/initiated after loading the dumped XML:

`Uncaught Exception Symfony\Component\DependencyInjection\Exception\RuntimeException: "Cannot create service "xxx" from factory method without a factory service or factory class." at /<path>/<to>/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ContainerBuilder.php`

Fixed the problem, and updated the relevant test fixture.
bug #11558 [DependencyInjection] Fixed missing 'factory-class' attribute in XmlDumper output (kerdany)

This PR was merged into the 2.3 branch.

Discussion
----------

[DependencyInjection] Fixed missing 'factory-class' attribute in XmlDumper output

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

Problem: XmlDumper doesn't write 'factory-class' XML attribute for definitions on which setFactoryClass() was called.

Impact: Container[Builder] to throws an exception when the relevant service is being requested/initiated after loading the dumped XML.
`Uncaught Exception Symfony\Component\DependencyInjection\Exception\RuntimeException: "Cannot create service "xxx" from factory method without a factory service or factory class." at /<path>/<to>//DependencyInjection/ContainerBuilder.php`

Solution: Made XmlDumper write the 'factory-class' attribute, and updated the relevant test fixture.

Another related problem, is that XMLFileLoader doesn't complain if the 'factory-class' attribute is missing for a 'service' elements that include 'factory-method' attribute, resulting in an ill-configured Definition object in the ContainerBuilder. I'll post an issue/ticket, and probably send another PR for that.

Commits
-------

18e3e6f [DependencyInjection] fixed missing 'factory-class' attribute in XmlDumper output
Plural fix
bug #11560 Plural fix (1emming)

This PR was submitted for the master branch but it was merged into the 2.3 branch instead (closes #11560).

Discussion
----------

Plural fix

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no*
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #11517
| License       | MIT

*BC note - this breaks code if people build on top of the incorrect returned value `drife`.

Fixes the `singular` for `drives`. I've added more test values to prove more edge cases and to show this changes doesn't break other `singular`-look ups.
In the test class i've added a few `known issues` for later reference/fixure.

Commits
-------

9b550d6 Plural fix
minor #11550 [Form] fix whitespace in Twig form template (craue)

This PR was merged into the 2.3 branch.

Discussion
----------

[Form] fix whitespace in Twig form template

| Q             | A
| ------------- | ---
| Bug fix?      | kind of (after updating from 2.3.17 to 2.3.18, some of my tests were broken because of this)
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | they should, let's see what Travis has to say...
| Fixed tickets | --
| License       | MIT
| Doc PR        | --

This fixes some whitespace rendering.

after merging #11386:
```html
<input type="text" id="myfield" name="myfield"     value="blah" />
```

before merging #11386 and with this PR again:
```html
<input type="text" id="myfield" name="myfield" value="blah" />
```

Commits
-------

8504d02 fixed whitespace in Twig form template
[TwigBridge] [Form] Fixed some extra empty spaces
minor #11554 [TwigBridge] [Form] Fixed some extra empty spaces (eiannone)

This PR was squashed before being merged into the 2.3 branch (closes #11554).

Discussion
----------

[TwigBridge] [Form] Fixed some extra empty spaces

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Extra empty spaces for choice_widget_collapsed, they were introduced by commit https://github.com/symfony/symfony/commit/8f9ed3ebb9ef126cc8940da493f252619671c0f3 by @chrisguitarguy

Commits
-------

16bd88e [TwigBridge] [Form] Fixed some extra empty spaces
bug #11545 [Bundle][FrameworkBundle] built-in server: exit when docroot does not exist (xabbuh)

This PR was merged into the 2.3 branch.

Discussion
----------

[Bundle][FrameworkBundle] built-in server: exit when docroot does not exist

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #6496
| License       | MIT
| Doc PR        |

When the server:run command is run with an invalid document root
directory (for example, when being in the app directory and not
changing the document root to ../web/), the command crashes on Windows
with a 267 exit code. On Linux, the server starts but just publishes
internal server errors.

Commits
-------

f143254 built-in server: exit when docroot does not exist
[BrowserKit] Fix browser kit redirect with ports
bug #11516 [BrowserKit] Fix browser kit redirect with ports (dakota)

This PR was submitted for the master branch but it was merged into the 2.3 branch instead (closes #11516).

Discussion
----------

[BrowserKit] Fix browser kit redirect with ports

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | No ticket opened
| License       | MIT
| Doc PR        | None

Whilst using Mink to do automated tests, I encountered a problem where redirects with ports would not work as the port was removed in the `updateServerFromURI()` method. This PR fixes the problem.

During my testing I encountered `$client->followRedirects(false);` in the ClientTest class that was causing the redirectWithPort test to pass even though it should have been failing (Removing the line caused the test to correctly fail before the patch was written)

Commits
-------

39973de [BrowserKit] Fix browser kit redirect with ports
Fixed relative redirects for ambiguous paths
bug #11499 [BrowserKit] Fixed relative redirects for ambiguous paths (pkruithof)

This PR was submitted for the master branch but it was merged into the 2.3 branch instead (closes #11499).

Discussion
----------

[BrowserKit] Fixed relative redirects for ambiguous paths

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

This fixes a problem I discovered today during Mink testing: I have a route with a slug and id, separated by colon (`/{slug}:{id}`). When the `HTTP_HOST` is being normalized it only checks for array key existence, not emptyness. In this case it was `false` due to the `parse_url` call in `updateServerFromUri`, which cannot handle this case:

```
$> php -r "var_dump(parse_url('/redirect', PHP_URL_HOST));"                                                                               NULL

$> php -r "var_dump(parse_url('/redirect:1234', PHP_URL_HOST));"                                                                          bool(false)
```

So now the url becomes `http:///redirect:1234`, because of the missing host.

Commits
-------

5ecc449 Fixed relative redirects for ambiguous paths