required component options

This PR allows the devs to specify which options are required by the component they're building.
This avoids a lot of cryptic errors at runtime when the options are not provided.

If any of the required options are missing:
* the component is not rendered
* an error message is displayed in the console

An example is given in the `comments` component.