Remove usage of $GLOBALS to pass cli

- Changes GivenPHP to require an instance of IReporter
when created.
- Allows get_instance to be passed an instance of IReporter
to be used when first creating an instance of GivenPHP to be
used as the singleton

This still doesn't feel entirely clean with the optional
instance of IReporter needing to be passed to get_instance on
first run. I originally wanted to use a...
```php
GivenPHP::get_instance()->setReporter($reporter);
```
...method but I realised that the reporter needed to be set in the
constructor so that...
```php
$this->reporter->reportStart(self::VERSION);
```
could be called in the constructor as well.
I could move that out instead...