fix soap encoding on non-nillable empty properties

Issue 1: When having an existing SOAP class property that is not
initialized (private $prop), PHP encodes it into an empty element: even
if the WSDL does not set the "nillable" flag for the element. We must
check if the property exists, not just if the returned property isNull.
The following php-src file should make that clear:
https://github.com/php/php-src/blob/PHP-5.6/ext/soap/php_encoding.c#L1697

Issue 2: HHVM simply checks for an incorrect object type: String instead
of Object (and then grabbing its class name). Very obvious:
https://github.com/php/php-src/blob/PHP-5.6/ext/soap/php_encoding.c#L464

Not sure how to create a proper test for this:
- the majority of bad zend tests are currently being skipped
- all good zend tests pass
- HHVM itself only provides 3 tests that focus on SoapServer instead.
- I'd have to find a way to reduce my current setup (3rd-party SOAP
  server, abstracted client) into a small example.

Hopefully you can forgive the lack of a test this time, the 2 php-src
links above should convince you.