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