Prevent init being called using an LLVM extension.

Instead of failing an assertion in the init method, a call to init can be prevented using `__attribute__((unavailable("message to the developer")))`.

This prevents the usage before even running the project (A compiler error is raised as soon as you try to use init) which I would consider an advantage.