reduce memory usage during fetch source sub phase

If includes or excludes are set
XContentFactory.xcontentBuilder() allocates a new
BytesStreamOutput using the default page size which is 16kb.

Can be optimized to use the length of the sourceRef because
that is the maximum possible size that the streamOutput will
use.

This redcues the amount of memory allocated for a request
that is fetching 200.000 small documents (~150 bytes each)
by about 300 MB
I lile it. To be even safer, maybe it would make sense to take the max with an arbitrary value: it could happen that you have very large source documents and are only interested in a small portion of them? For instance something like:

```java
final int initialCapacity = Math.min(1024, source.internalSourceRef().length());
BytesStreamOutput streamOutput = new BytesStreamOutput(initialCapacity);
```

What do you think?