Merge pull request #11 from Qingtao-Cao/devel

Introduce the tech deep-dive document of the oBIX 1.0 release
Delete the redundant watchDelete test script

It has been renamed to watchDeleteSingle so as to differ from
another script of watchDeleteAll.
Fix bin-path and make use of bin-environment settings

Fix the bin-path setting when used with valgrind.

Also manipulate the bin-environment setting to specify the location
of libobix.so at run-time. Considering that it is always installed
/usr/lib, such path name can be harded-coded in this setting.
Update the server_about.xml file

Update the server_about.xml file, in particular, remove the null
attributes since they now serve specical purpose to have a matching
node removed from the XML DOM tree.
Update the exmaple_device.xml for test purpose

Declare both the root node and its direct child nodes of the example
device as writable so as to test the ability to remove a part of a
signed up contract, but not it as a whole.
Fix a minor error in the README.md file

"sudo" is needed when peeking the error log of lighttpd.
Provide xml_is_null helper function

Aside from existing xml_is_hidden, a new helper function of xml_is_null
is provided to help check if null="true" is set in the given node.
Synchronise between the deletion operation and the watch subsystem.

Enable the oBIX server delete a subnode from a device contract as long
as the impact subnode is writable.

As a result any watch meta tags in the deleted subtree will also be
removed, which requires that corresponding watch_item_t descriptor
must be marked as invalidated so as not to corrupt the watch subsystem.

Also any pending poll tasks should be activated so that a null object
can be returned back to clients immediately.

BTW, clients should manually remove an invalidatd watch item so that
they can have the same href monitored once again after they get to know
that the owner of the device contract has installed a new node on that
href.

Last but not least, the signOff request would have to be used in order
to remove an entire device contract. The signOff handler will mainpulate
a new device subsystem to achieve certain access control on device
contracts. But it has not been implemented yet.
Adopt "-Werror" compilation flag

Adopt "-Werror" compilation flag along with "-Wall" to have gcc throw out
as many warnings as possible and regard them all as errors.
Fix and improve the usage of the obix_request_t interface

The obix_request_t structure associates a FCGI request and oBIX response
altogether and are used by all kinds of handlers on the oBIX server.

However, unfortunately, when it was introduced in this June all history
relevant handlers have not been committed resulting in all relevant services
broken down, which has been fixed up here and the "-Werror" complition flag
has been introduced (in previous commit) to prevent this from happening
again in the future.

Also the usage of the response_uri has been improved. Handlers of different
services won't have to explicitly set it up by always duplicating the decoded
request_uri, now the latter will be fallen back on if the former is not set
up yet.

If desirable, handlers can set the response_uri up different from the decoded
request_uri, for example, for newly created history facilities or watch objects.

Last but not least, the prototypes for obix_server_reply_object and
obix_server_handleError has been simplified by removing the redundant overrideUri
parameter. Since as explained eariler, handlers can setup response_uri if needed.