Developer friendly Class Not Found and Undefined Function errors.
[Debug] fixed CS
[Debug] made guessing of possible class names more flexible
[Debug] made Debug find FQCN automatically based on well-known autoloaders
[Debug] moved special fatal error handlers to their own classes
[Debug] refactored unit tests
[Debug] added some missing phpdocs
fixed an error message
merged branch fabpot/class-not-found-exception (PR #8553)

This PR was merged into the master branch.

Discussion
----------

[Debug] Developer friendly Class Not Found and Undefined Function errors

This is a followup of #8156

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

Here is the original description from #8156:

Per a discussion with @weaverryan and others, I took a crack at enhancing the exception display for class not found errors and undefined function errors. It is not the cleanest solution but this is a work in progress to see whether or not following this path makes sense.

# Class Names

## Class Not Found: Unknown Class (Global Namespace)

```php
<?php
new WhizBangFactory();
```

> Attempted to load class 'WhizBangFactory' from the global namespace in foo.php line 12. Did you forget a use statement for this class?

## Class Not Found: Unknown Class (Full Namespace)

```php
<?php
namespace Foo\Bar;
new WhizBangFactory();
```

> Attempted to load class 'WhizBangFactory' from namespace 'Foo\Bar' in foo.php line 12. Do you need to 'use' it from another namespace?

## Class Not Found: Well Known Class (Global Namespace)

```php
<?php
new Request();
```

> Attempted to load class 'Request' from the global namespace in foo.php line 12. Did you forget a use statement for this class? Perhaps you need to add 'use Symfony\Component\HttpFoundation\Request' at the top of this file?

## Class Not Found: Well Known Class (Full Namespace)

```php
<?php
namespace Foo\Bar;
new Request();
```

> Attempted to load class 'Request' from namespace 'Foo\Bar' in foo.php line 12. Do you need to 'use' it from another namespace? Perhaps you need to add 'use Symfony\Component\HttpFoundation\Request' at the top of this file?

# Functions

## Undefined Function (Global Namespace)

```php
<?php
// example.php:
// namespace Acme\Example;
// function test_namespaced_function()
// {
// }
include "example.php";

test_namespaced_function()
```

> Attempted to call function 'test_namespaced_function' from the global namespace in foo.php line 12. Did you mean to call: '\acme\example\test_namespaced_function'?

## Undefined Function (Full Namespace)

```php
<?php
namespace Foo\Bar\Baz;

// example.php:
// namespace Acme\Example;
// function test_namespaced_function()
// {
// }
include "example.php";

test_namespaced_function()
```

> Attempted to call function 'test_namespaced_function' from namespace 'Foo\Bar\Baz' in foo.php line 12. Did you mean to call: '\acme\example\test_namespaced_function'?

## Undefined Function: Unknown Function (Global Namespace)

```php
<?php
test_namespaced_function()
```

> Attempted to call function 'test_namespaced_function' from the global namespace in foo.php line 12.

## Undefined Function: Unknown Function (Full Namespace)

```php
<?php
namespace Foo\Bar\Baz;

test_namespaced_function()
```

> Attempted to call function 'test_namespaced_function' from namespace 'Foo\Bar\Baz' in foo.php line 12.

Commits
-------

bde67f0 fixed an error message
80e19e2 [Debug] added some missing phpdocs
968764b [Debug] refactored unit tests
cefa1b5 [Debug] moved special fatal error handlers to their own classes
53ab284 [Debug] made Debug find FQCN automatically based on well-known autoloaders
208ca5f [Debug] made guessing of possible class names more flexible
a0b1585 [Debug] fixed CS
6671945 Developer friendly Class Not Found and Undefined Function errors.
[FrameworkBundle] fixed regression where the command might have the wrong container if the application is reused several times
merged branch fabpot/console-fix (PR #8599)

This PR was merged into the master branch.

Discussion
----------

[FrameworkBundle] fixed regression where the command might have the wrong container if the application is reused several times

| 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

This fixes a regression introduced in #8242. Before this PR, the commands were always getting the current container registered in the kernel. But as the commands are now registered only once, if the container changes, the commands were not aware of this change. That happens quite frequently in functional tests where the Kernel is booted and shutdown several times in the same process.

Commits
-------

1bd45b3 [FrameworkBundle] fixed regression where the command might have the wrong container if the application is reused several times