Simplify asVersion()

By leveraging `get_object_vars($this)`, the static property arrays are no longer necessary.  The catch is that all exportable properties in child classes must not be `private`, or must be handled in a custom `_asVersion()` method.

When tests were added or modified, only minimal happy-paths were taken.  More robust testing is still needed for complete coverage.  The exception is `StatementTest` which had it's `testAsVersion()` updated to actually test functionality.  It's now the most robust test of `AsVersionTrait::asVersion()` in the whole suite.

I welcome your feedback and look forward to helping out and working with you on this and your other libraries.
This line is to specifically catch a php array.  It won't catch iterators or other array-like structures.  It was added for local properties defined as an array.  I don't remember exactly, but it may be a copy-pasta from `ContextActivities::_asVersion()`.  I'll remove it and see if the test still passes.