Resolve #3475584 "Add blocks as components"
Closes #3475584
This MR introduces notion of SingleDirectoryComponent Source Plugin and BlockComponent Source Plugin, however it doesn't actually use BlockComponent .
There is also form related code in BlockComponent that at the moment I am not sure if we will need. I've kept it for reference for now, but depending on how we're implementing Block settings/config in Components we might significantly change or remove it completely.
There are also some changes to the "reasons" page in terms of labels - this is by no means final version and needs to be discussed and updated.
Finally, at some point in video calls me and @wimleers discussed the notion of expanding Component config entity ID to encompass <type>+<provider>+<id> - for example sdc+sdc_test+my-cta. This MR currently adds source_plugin property storing type / ComponentSourcePluginId and I personally lean towards extending id property to include <type> .
