GROOVY-4526 null.with exposes NullObject to user code

As mentioned in the [JIRA entry](http://jira.codehaus.org/browse/GROOVY-4526), the following passes

```groovy
import org.codehaus.groovy.runtime.NullObject

new File('inexestent-folder/').listFiles().with { files ->
    assert files != null
    assert files instanceof NullObject
    assert files.is( null )
}
```

Exposing `NullObject` to the user.

This patch adds a `with` method to `NullObject` (as suggested in the Jira)