The About contract of the oBIX server should be visiable

Make the about contract of the oBIX server visiable, which provides
some abstract information of the oBIX server instance.
Better the comment for the history facility template

Add comments about the fact that the automatically created history
facility nodes won't have the index list, and one history facility
may have others nodes as its children.
Fix invalid memory accesses in history cleanup code

Whenever a history facility become a child of another, it should
be disposed before its parent so as to avoid double-free of its node
in the global DOM tree.

Note the history facility descriptor holds pointers to relevant node
in the global DOM tree. If the parent facility is destroyed first, then
its whole subtree are destroyed including relevant node of its child
facility. However, unfortunately, when the child facility is destroyed
later, it will try to destroy its node again which has been removed
already along with its parent. That's the reason valgrind throws out
tons of error messages as below:

==23172== Invalid read of size 4
==23172==    at 0x3C626578F2: xmlFreeNode (tree.c:3751)
==23172==    by 0x4C3DEE1: xml_delete_node (xml_utils.c:532)
==23172==    by 0x40DDDF: xmldb_delete_node (xml_storage.c:530)
==23172==    by 0x40605E: hist_destroy_dev (history.c:830)
==23172==    by 0x40789C: obix_hist_dispose (history.c:1688)
==23172==    by 0x40990C: obix_server_exit (server.c:184)
==23172==    by 0x4087CB: obix_fcgi_exit (obix_fcgi.c:110)
==23172==    by 0x409136: main (obix_fcgi.c:425)
==23172==  Address 0xbc37c88 is 8 bytes inside a block of size 120 free'd
==23172==    at 0x4A074C4: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==23172==    by 0x3C626574B7: xmlFreeNodeList (tree.c:3683)
==23172==    by 0x3C6265786B: xmlFreeNode (tree.c:3728)
==23172==    by 0x4C3DEE1: xml_delete_node (xml_utils.c:532)
==23172==    by 0x40DDDF: xmldb_delete_node (xml_storage.c:530)
==23172==    by 0x40605E: hist_destroy_dev (history.c:830)
==23172==    by 0x40789C: obix_hist_dispose (history.c:1688)
==23172==    by 0x40990C: obix_server_exit (server.c:184)
==23172==    by 0x4087CB: obix_fcgi_exit (obix_fcgi.c:110)
==23172==    by 0x409136: main (obix_fcgi.c:425)
==23172==
==23172== Invalid read of size 8
==23172==    at 0x3C62657902: xmlFreeNode (tree.c:3756)
==23172==    by 0x4C3DEE1: xml_delete_node (xml_utils.c:532)
==23172==    by 0x40DDDF: xmldb_delete_node (xml_storage.c:530)
==23172==    by 0x40605E: hist_destroy_dev (history.c:830)
==23172==    by 0x40789C: obix_hist_dispose (history.c:1688)
==23172==    by 0x40990C: obix_server_exit (server.c:184)
==23172==    by 0x4087CB: obix_fcgi_exit (obix_fcgi.c:110)
==23172==    by 0x409136: main (obix_fcgi.c:425)
==23172==  Address 0xbc37ce0 is 96 bytes inside a block of size 120 free'd
==23172==    at 0x4A074C4: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==23172==    by 0x3C626574B7: xmlFreeNodeList (tree.c:3683)
==23172==    by 0x3C6265786B: xmlFreeNode (tree.c:3728)
==23172==    by 0x4C3DEE1: xml_delete_node (xml_utils.c:532)
==23172==    by 0x40DDDF: xmldb_delete_node (xml_storage.c:530)
==23172==    by 0x40605E: hist_destroy_dev (history.c:830)
==23172==    by 0x40789C: obix_hist_dispose (history.c:1688)
==23172==    by 0x40990C: obix_server_exit (server.c:184)
==23172==    by 0x4087CB: obix_fcgi_exit (obix_fcgi.c:110)
==23172==    by 0x409136: main (obix_fcgi.c:425)
==23172==
==23172== Invalid free() / delete / delete[] / realloc()
==23172==    at 0x4A074C4: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==23172==    by 0x4C3DEE1: xml_delete_node (xml_utils.c:532)
==23172==    by 0x40DDDF: xmldb_delete_node (xml_storage.c:530)
==23172==    by 0x40605E: hist_destroy_dev (history.c:830)
==23172==    by 0x40789C: obix_hist_dispose (history.c:1688)
==23172==    by 0x40990C: obix_server_exit (server.c:184)
==23172==    by 0x4087CB: obix_fcgi_exit (obix_fcgi.c:110)
==23172==    by 0x409136: main (obix_fcgi.c:425)
==23172==  Address 0xbc37c80 is 0 bytes inside a block of size 120 free'd
==23172==    at 0x4A074C4: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==23172==    by 0x3C626574B7: xmlFreeNodeList (tree.c:3683)
==23172==    by 0x3C6265786B: xmlFreeNode (tree.c:3728)
==23172==    by 0x4C3DEE1: xml_delete_node (xml_utils.c:532)
==23172==    by 0x40DDDF: xmldb_delete_node (xml_storage.c:530)
==23172==    by 0x40605E: hist_destroy_dev (history.c:830)
==23172==    by 0x40789C: obix_hist_dispose (history.c:1688)
==23172==    by 0x40990C: obix_server_exit (server.c:184)
==23172==    by 0x4087CB: obix_fcgi_exit (obix_fcgi.c:110)
==23172==    by 0x409136: main (obix_fcgi.c:425)

By no means the obix_hist_dispose could ever be called more than once,
nor any history node is parented to more than one ancestor node. It's
this race condition about the position of the parent and child facilities
descriptors in the queue that is the root cause of all these invalid
memory access

To address this issue, the histroy facilities descriptors are now organised
in a certain order to ensure parent facilities are always positioned before
child facilities, so that at cleanup the list can be traversed in a reverse
order to have the child facilities and their nodes in the global DOM tree
removed first.
Merge pull request #59 from Qingtao-Cao/devel

Devel