Fix edit_xml update of existing attribute, with acceptance test

Redmine 2034: https://cfengine.com/dev/issues/2034

The xmlNewProp() libxml2 call, used in SetAttributeInNode(), does not
alter the value of an existing attribute, resulting in an inability
to keep promises about the value of any existing attribute.

The xmlSetProp call will create an attribute that does not exist, so
replacing xmlNewProp with xmlSetProp resolves the issue.
Merge pull request #294 from mvpel/fix_xml_setattr

Fix edit_xml update of existing attribute, with acceptance test
Factor out verify_storage.h
Factor out verify_exec.h
Introduce SyntaxCheck, PromiseKept and Repair for verify_exec

This is a proof of concept for splitting the traditional Verify function
for modules. It splits Verify into 3 stages, syntax checking (evaluation stage),
status checking (whether the promise needs repair), and Repair. Repair returns an
ActionResult, specifying the outcome of attempting to repair the promise.

The end goal is to have all modules take a struct with callbacks to these functions,
enabling pluginification and a step towards introducing isolated evaluation state
(by effectively removing cfPS from lower levels).

Additionally, a GetLockName function is needed for each promise type, but this
may be reconsidered in the future (when we get around to reconsider locking).
Merge pull request #296 from sigurdteigen/cleanup/split-verify

Introduce SyntaxCheck, PromiseKept and Repair for verify_exec
et rid of MINGW, use __MINGW32__ instead (Redmine #2018)