Don't call #as_json on children of Array and Hash with nil when no arguments are passed

This is breaking definitions like these:

```ruby
def as_json(options = {})
  # Do something with options, for example:
  if options.key? :something
    ...
  else
    ...
  end
end
```

This is more or less how it works before 240863a1 because the way it used to go through the Encoder object, which ensures options is never nil.

([Example](https://github.com/rails-api/active_model_serializers/blob/master/lib/active_model/serializable.rb#L4))

/cc @jeremy