Cast array properties to ArrayObject

Until late in PHP 5.4's lifecycle, dereferencing array property values can
lead to problems. As such, `__set()` now casts arrays to `ArrayObject` to
ensure that dereferencing works properly.