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.
Yes, it is possible to add properties to a class.  I'm a big proponent of immutability, though.  Here's an example of [a possible solution](https://gist.github.com/texdc/9f6b59f38e6270387aa3).  If you like, I can add that magic `__set()` in the `AsVersionTrait`.