Redmine #6180: Introduce libyaml integration.

With readyaml() and parseyaml() functions.

Based on pull request #2028 in CFEngine core repository.
Modified by Kristian Amlie <kristian.amlie@cfengine.com>
@tzz: About all the ProgrammingErrors in this function: is it possible to trigger them if a malformed YAML file is provided? If so, it would be better to return errors.