Use newInstanceWithoutConstructor when possible

Comment says

// We have to use this dirty trick instead of ReflectionClass::newInstanceWithoutConstructor()
// because of https://github.com/sebastianbergmann/phpunit-mock-objects/issues/154

As I see the only reason to use unserialize here is internal classes (or not?). So how about using unserialize for internal classes and newInstanceWithoutConstructor for other?
Merge branch '2.0' into 2.1
newInstanceWithoutConstructor only for 5.4+
Merge branch '2.0' into 2.1