Delete the redundant watchDelete test script

It has been renamed to watchDeleteSingle so as to differ from
another script of watchDeleteAll.
Fix bin-path when used with valgrind.

Fix the bin-path setting when used with valgrind.
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.
Improve the README.md file

"sudo" is needed when peeking the error log of lighttpd.

Also mention that the bin-environment setting can be used if obix-fcgi
failed to find libobix.so, and gdb can be used to attach a running
server to capture the oops on the spot.
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.
Delete the redundant watchDelete test script

It has been renamed to watchDeleteSingle so as to differ from
another script of watchDeleteAll.
Fix bin-path when used with valgrind.

Fix the bin-path setting when used with valgrind.
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.
Improve the README.md file

"sudo" is needed when peeking the error log of lighttpd.

Also mention that the bin-environment setting can be used if obix-fcgi
failed to find libobix.so, and gdb can be used to attach a running
server to capture the oops on the spot.
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.
Merge branch 'devel' of github.com:Qingtao-Cao/obix into devel
Enable adding nodes to non-writable objects.

Previously adding or deleting nodes from the given node all require that
the target node itself or its parent must be writable.

However, if a child of a non-writable object is mistakenly deleted, there
is no way to re-install it because its parent is not writable.

To mitigate such situation, adding child nodes won't require the target
node to be writable, but changing its val attribute of deleting itself
or any of its child node still does.

However, the added node should better be writable, otherwise it cannot
be delete if its parent is also not writable.

The problem can be fixed properly once the signOff handler is implemented.
If a child node of a non-writable object is inadvertantly deleted, simply
sign off the entire parent object and re-signUp.

Signed-off-by: Qingtao Cao <harry.cao@nextdc.com>