Refactoring and cleanup in block package.

Added a "has" method to check block attributes.
This makes things marginally cleaner when doing safety checks. For
example, we want to ensure that a file block "has" a source and a target.

Segmented the block tests into several categories.
This includes a fix for a circular dependency between ManifestBlock
and the parser which was not apparent until these changes were made.
Added simple version of the directory block module
Fix for root dir not being an abspath.

This shows up in commandline execution, since dirname on a relative path
returns a relative path, and the root_dir is by default dirname of the
root manifest.
Better handling of chmod, esp. as non-root users.

This includes methods for checking if the current user is root,
getting the current user's primary group name, and checks to see if the
user is root before adding chmod to a shell action.
Merge branch 'feature/chmod-nonroot' into dev
Fixed an inverted check in the config application.

The result of this inversion was that every attribute of a block was
overwritten with the config's default value.
Includes some minor fixes for directory blocks.
Added missing line to fix config application.
Merge branch 'dev' into stable