Fix constness of some Buffer and BufferList functions.
Add StringAppend function.
Add "cat" and "sed" to discovered tools in acceptance test framework.
Make tmp dir a "real" tmpdir, with permissions and everything.

Some tests that create files as special users rely on this, for
example users promises.
Added a safeguard against using fakeroot together with --unsafe.
Introduce GetErrorStrFromCode().
Add conversion between 8-bit and 16-bit strings.
Fix testall when path contains newlines.

Important for Windows testing.
Add a convenience classes body in tests to set classes unconditionally
Rewrote test tools detection logic.

It should both be more general, as well as more Windows friendly.
Cosmetic cleanup of StringAppend().
Redmine#3454: simple text manipulation functions
Wrap repeated binary lookups in a function in testall.
Add SetIsEqual and MapContainsSameKeys.
Introduce "users" promises into CFEngine.

Collaberation with jeffali <hichame.jeffali@cfengine.com>.
Switch to using StringSet instead of BufferList.

It's more appropriate for comparing.
Add more verbose logging to see what's going on in users promises.
Merge pull request #1021 from tzz/feature/3454-text-manipulation-functions

Redmine#3454: simple text manipulation functions
Merge pull request #1060 from kacfengine/user-promises-support

Support commits for user promises
Merge pull request #1061 from kacfengine/user-promises

Introduce "users" promises into CFEngine.