Added tests for XML data retrieval
Refactor getXML

Made several changes to the way XML data is retrieved, instead of one
big function with a lot of `if ($object == "xxx")` statements, it's now
a nice OO function.

- Refactored the global get_people_xxx functions in the person and
photographer object into static functions. This makes some changes in
the way data is retrieved in some places, photographer::getAll(), for
example now returns all persons when called by an admin user. This
should not have any effect on the way Zoph works, but it greatly
simplifies the internals.

- Changed the xml_rootname()/xml_nodename() methods in several classes
into a class constants XMLROOT and XMLNODE.
Refactor of create_xxx_puldown() and get_xxx_select_array() methods

- Moved several create_xxx_pulldown() global functions into template
class as static methods:
  - create_pulldown() --> template::createPulldown()
  - create_view_pulldown() --> template::createViewPulldown()
  - create_autothumb_pulldown() --> template::createAutothumbPulldown()
  - create_photo_field_pulldown() -->
template::createPhotoFieldPulldown()
  - Added template::createYesNoPulldown()
  - There are still a bunch of get_xxx_pulldown() global functions left,
they will be dealt with a a later stadium.
- Added createPulldown() and createAutoCompPulldown() methods to
zophTable, to be inherited by other classes.
- Changed global vars in edit_photos.php to cache search arrays to a
static variable in the various organizers, added setSAcache() function.

- Moved global get_xxx_select_array() functions into
zophTable::getSelectArray() that is inherited by several other classes
- Moved create_tree_select_array global function into static method in
zophTreeTable, split into getSelectArray() and getTreeSelectArray()
- added getAutocompPref() functions so it's easier to use inheritance