Constructors can now return an initialization error

Sometimes constructors need to be able to return an initialization error. This little non-breaking change adds this possibility on top of the standard behavior. An example in the README file has also been provided.