use __construct() for constructor

Too many issues of missing constructors because of (presumably) name
changes or simple mis-understanding. PHP v5 uses __construct() for the
constructor as the preferred spelling, so we should do so as well (in
most cases).

This also adds the code to check for setup when setting default options.
This is the convention. There is some level of overhead in setting
default options, so we do not want it to happen needlessly.