Merge branch 'release-2.2' into develop

* release-2.2:
  Bump version for 2.2.4-pl release
Bump version for 2.2.5-dev
Refactor HYDRATE_FIELDS/HYDRATE_RELATED_OBJECTS using __get()/__set()
xPDOObject/xPDOSimpleObject support for xPDO::getDescendants()

This provides a way of getting all the classes from loaded packages, and allows classMap inspection per package via xPDO::$classMap
[#7607] xPDOObject->get(array) triggering invalid lazy loading
- Fix lazy loading of fields on demand

xPDOObject->_loadFieldData() was broken by a change to xPDOObject::_loadRows()
Fix xPDOTest::testGetFields for sqlite/sqlsrv
Prefix indexes with table name for sqlite
[#7797] Avoid E_NOTICE from array_diff_assoc change in 5.4
[#8060] Implement __isset() to fix empty()/isset() on hydrated vars

Changes to HYDRATE_FIELDS/HYDRATE_RELATED_OBJECTS broke the expected behavior of empty() and isset() on the variables when accessed directly. This resolves the BC break.
Merge branch 'develop' into release-2.2

* develop:
  [#8060] Implement __isset() to fix empty()/isset() on hydrated vars
  [#7797] Avoid E_NOTICE from array_diff_assoc change in 5.4
  Prefix indexes with table name for sqlite
  Fix xPDOTest::testGetFields for sqlite/sqlsrv
  - Fix lazy loading of fields on demand
  [#7607] xPDOObject->get(array) triggering invalid lazy loading
  xPDOObject/xPDOSimpleObject support for xPDO::getDescendants()
  Refactor HYDRATE_FIELDS/HYDRATE_RELATED_OBJECTS using __get()/__set()
  Bump version for 2.2.5-dev
Bump version for 2.2.5-pl release
xPDO 2.2.5-pl

Merge branch 'release-2.2'

* release-2.2:
  Bump version for 2.2.5-pl release
  [#8060] Implement __isset() to fix empty()/isset() on hydrated vars
  [#7797] Avoid E_NOTICE from array_diff_assoc change in 5.4
  Prefix indexes with table name for sqlite
  Fix xPDOTest::testGetFields for sqlite/sqlsrv
  - Fix lazy loading of fields on demand
  [#7607] xPDOObject->get(array) triggering invalid lazy loading
  xPDOObject/xPDOSimpleObject support for xPDO::getDescendants()
  Refactor HYDRATE_FIELDS/HYDRATE_RELATED_OBJECTS using __get()/__set()
  Bump version for 2.2.5-dev
Merge branch 'release-2.2' into develop

* release-2.2:
  Bump version for 2.2.5-pl release
[#8176] xPDO->updateCollection() fails to set NULL values

Addresses modxcms/revolution#310 from @grachov
Deprecate xPDO->getMicroTime()

Was implemented to support PHP 4 emulation of the microtime() call with the PHP 5-only get_as_float parameter set to true. No longer needed.
[#8320] Preserve order of $columns in xPDOObject::getSelectColumns()

When $exclude==false and $columns are specified, xPDOObject::getSelectColumns() will now preserve the order specified in $columns rather than reordering the returned values according to the order of the columns in the field map.
Schema option callback="(class::)method" added to xPDOObject::set()
[#8148] Prevent update from criteria using raw NATIVE_KEY on install
[#6930] Fix improper escaping of $ in parseBindings