Return types

This is a pull request to implement the return type RFC: https://wiki.php.net/rfc/returntypehinting

Presently not ready for merge (there are a few bug fixes still needed).
> I think we should handle that case at compile time.

That can be done for explicit returns; I'll look into that. Thanks.

I think we'd still need this for when you reach the end of a function without using a return statement.