Permit auto initialization

Auto initialization only works when the constructor has one or more
parameters. If one parameter is passed and appears to be an object,
`initWithOptions` is called with the object (if available). Otherwise
(and in all other cases), `init` is called with the parameters. To
supplement this, `init` and `initWithOptions` should always `return
self`. This permits the construct of `var x = new someObject(options);`
or `var x=(new someObject()).init(x,y,z);`
Add auto initialization support
New build