What init methods should do

I figure developers have a right to know what they can expect an init function to do. As well as the changes in this PR I think we can be even stricter  - which will give us the big win of a standardised API and easier installation - without sacrificing much (because a module *could* also implement other non-compliant init methods under different names )

I think a good starting principle is that a method *must* only be called `init` if it can be auto-invoked. Following from that both the *should* rules in this PR should be changed to *must*.

I think an additional useful convention to enforce would be parameters, vis a vis if an `init` method can take parameters they must be `init(el, conf)` where

* if `el` is a good candidate to be owned DOM (i.e. has class `o-modulename`) then a module instance is created on el
* if `el` is not a good candidate for owned DOM, then a module instance is created for each `el.querySelectorAll('.o-modulename')`
* `conf` accepts equivalents of all configs that can be set using data atttributes (but could also accept additional properties too, so that `init(el, conf)` can give access to an advanced mode )