* Elminates a lot of logic in the AnsibleComposer class.
* Update tests with new column offsets. The rule should now be
consistently: Column is the start of the entry's value (so for
strings, the first non-space after the entry beginning, for dicts, the
first character of the first key)
* Changes AnsibleConstructor so that only unicode strings are returned
(no str type)
* Tracks line, column numbers for strings
* Adds unittests for AnsibleLoader (generic for all the yaml parsing)
* Do backslash escape parsing in parse_kv() [was being done in the copy
module purely for newlines in the copy module's content param before]
* Make parse_kv always return unicode
* Add bandaid to transform args to unicode until we can fix things
calling parse_kv to always send it unicode.
* Make split_args deal with unicode internally. Warning, no bandaid for
things calling split_args without giving it unicode (shouldn't matter
as dealt with str internally before)
* Fix copy and unarchive action plugins to not use setdefaultencoding
* Remove escaping from copy (it was broken and made content into latin-1
sometimes). escaping is now in parse_kv.
* Expect that content is now a unicode string so transform to bytes just
before writing to the file.
* Add initial unittests for split_args and parse_kv. 4 failing
tests.because split_args is injecting extra newlines.
Also reworking tests to cut down on the number of patches required
by sub-classing the DataLoader() class and reworking the base object's
structure a bit to allow its use
* added ability to set parents (will be used when the deps are loaded)
* added role caching, so roles are not reloaded needlessly (and for
use in detecting when roles have already been run)
* reworked the way metadata was stored - now individual attribute fields
instead of a dictionary blob
* moved old unittests for vault over to the new codebase
* reverted YAML error helpers and reverted the load() function
in parsing/__init__.py, pending a rewrite of a new YAML loader
class of some kind to encapsulate all of that
* fixed an error in in the module args parser regarding the shell/
command argument parsing, where some additional arguments were
being lost
* using inspect module instead of iteritems(self.__class__.__dict__, due
to the fact that the later does not include attributes from parent
classes
* added tags/when attributes to Base() class for use by all subclasses
* removed value/callable code from Attribute, as they are not used
* started moving some limited code from utils to new places in v2 tree
(vault, yaml-parsing related defs)
* re-added ability of Block.load() to create implicit blocks from tasks
* started overhaul of Role class and role-related code