This commit introduces the publicComponentService, which makes it easy
to mount OWL components in the front end. All public components will share
the same env and therefore the same services.
To define an OWL Component in a public template, first create an owl component
and add it to the "public_components" registry in javascript, then use
<owl-component name="key"> in the template, where key is the key you used when
registering your component. If you want to pass props to your component, you can
give it a props attribute in the template, containing the props as JSON.
Example:
My Public Component:
```js
class MyPublicComponent extends Component {...}
registry.category("public_components").add("my_public_component", MyPublicComponent);
```
My Public Template:
```xml
<templates>
...
<owl-component
name="my_public_component"
props='{"title": "My First Public Component"}'/>
...
</templates>
```
Part-of: odoo/odoo#136159
Co-authored-by: Samuel Degueldre <sad@odoo.com>