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.
What's the reason to switch from checking for the method existence to checking the class uses? Can we be consistent here?