Internal: clarify when a shard search request gets created to be only used locally

In some cases a shard search request gets created on a node to be only used there and never sent over the transport. This commit introduces two static "factory" methods and makes the existing local constructors private so that it's clearer when a shard search request will be only used locally.

Took the chance to remove an unused `InternalScrollSearchRequest` constructor and an empty else branch in `TransportSearchScrollQueryAndFetchAction`.
The thing is that this is indeed a local request and doesn't need to be `Streamable`, but the `writeTo` is somehow needed to locally build the cache key, that is why I kept the `readFrom` too in the same class here as they are related, and made them both package private. I agree it could be cleaner, not sure how...since both local and transport request need to write the cache key, which must be the same.


 Agree it's not very clean, but I can't really move out the `writeTo`.