[IE] Add batched blob support (#2203)
* [IE] Add batched blob support
New `class BatchedBlob : public CompoundBlob` defined to allow to pass multiple blobs as 1 InferRequest input.
Motivation: There is the special user case when a number of plain images (e.g. `NV12Blob`) should be passed as one input for network which batch size > 1.
`class CompoundBlob` is not applicable for such cases due to:
1. `NV12Blob` is `CompoundBlob` which prevents to combine multiple NV12 images to a CompoundBlob
2. The default behavior in most of plugins - do not accept generic CompoundBlob as `SetBlob()` argument
Adding `SetBlob(name, vector<Blob::Ptr>...)` to `class IInferRequest`, `class InferRequest`, `class IInferRequestInternal`, ... - is not effective solution due to limited and specific use cases for `batched inputs`.
+ Apply rule-of-zero to CompoundBlob and inherited classes.
* Add "BATCHED_BLOB" optimization capability metric
* Add BatchedBlob usage to hello_nv12_input_classification
* Apply offline code review outcome:
1. Revert CompoundBlob public .ctors signatures
2. Remove 'workaround' .ctor for `BatchedBlob`
3. Revert tensor descriptors of `I420Blob` `NV12Blob` back to the 'fake' value.
* Code review fix
* Add functional tests for CPU, GPU, MULTI, HETERO
* update doc comment
* Apply code review change requests.