Returntypehinting RFC

RFC'd by @morrisonlevi

PR'd for review + CI

https://wiki.php.net/rfc/returntypehinting
I don't see how replacing the `function` keyword/token with the return type hint (as in e.g. Java) could remotely work for PHP.  Unlike Java, PHP still has to support procedural functions (as well as Closures).

Aside from that, I fully agree with the cited UX concern of being able to grep for `'function ...'`.  That's a life-saver if you have to deal with a very large code base.

If the fundamental position of the return type hint is indeed still up for discussion, then I think that the suggestion of putting it before instead of after the parameters would have quite some merit:

```diff
-function NAME ( [ PARAMETERS ] ) [ : RETURN_TYPE ]
+[ RETURN_TYPE ] function NAME ( [ PARAMETERS ] )
```

It implicitly avoids the original topic of importing variables in Closures; i.e.:
```php
array function ($value) use ($multiplier) {
```

Doing so requires to add a few constraints on valid return types; `public`, `protected`, `private`, `static` cannot be return types, even if you may have classes with the same, case-insensitive name.

Also, the following would be valid:
```php
static public static function getInstance();
```
The following _may_ be valid, but does not specify a return type hint, because ambiguous:
```php
public static function getInstance();
```
(`static` applies to the method declaration, not the return type hint)

Whereas we _could_ consider the following to be valid again:
```php
public static static function getInstance();
```
Looks obvious to me, but may be confusing for others.  Not sure whether it's a big deal.