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`.
to make this clean can we make all the members protected and then inside the ShardSearchTransportRequest we have a inner class that extends this local request and defines the readFrom / writeTo methods?