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
Closes #172
Fix whitespace
Merge branch '2.0' into 2.1
Merge branch '2.1' into 2.2
Move private method after protected methods
Merge branch '2.0' into 2.1
Merge branch '2.1' into 2.2