Support preprocessing within the `NodeInfo` type. Provide methods for
placement directly from the `NodeInfo` type. Returns slice of slices of
`NodeInfo` from placement methods of `Netmap`. Remove no longer needed
`Node` and `Nodes` types.
```
name old time/op new time/op delta
ManySelects-12 19.7µs ±14% 15.8µs ±15% -19.70% (p=0.000 n=20+20)
name old alloc/op new alloc/op delta
ManySelects-12 8.65kB ± 0% 6.22kB ± 0% -28.03% (p=0.000 n=20+20)
name old allocs/op new allocs/op delta
ManySelects-12 82.0 ± 0% 81.0 ± 0% -1.22% (p=0.000 n=20+20)
```
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
Move `PlacementPolicy_ProcessSelectors` test. It tests how good
nodes were grouped into buckets after selection, but we can still query
full results and check them.
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
If weights for some buckets are equal, result depends on the
initial positions of buckets in slice. Thus we sort buckets by value
using hash of the first node as a have for the whole bucket.
This is ok, because buckets are already sorted by HRW.
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
* Implement `NodeInfo.EnterSubnet` method which adds node's subnet.
* Implement `NodeInfo.IterateSubnets` which behaves similar to
eponymous function from neofs-api-go/v2.
* Implement `BelongsToSubnet` which checks if `NodeInfo` describes the
node belonging to a specific subnet.
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>