Converted ShellActions to only hold one command.

A command list is not necessary, since you can keep an AL of
ShellActions. It also gives better error reporting to separate shell
commands into separate actions.
Merge branch 'refactor/shell-action-singleton' into dev
Readability edits throughout src.block

Renamed "base_block.py" to "base.py" for clarity.
block.base reads a bit better than block.base_block, which gives a false
uniformity with file blocks, dir blocks, and so forth.

Added comments for Block, DirectoryBlock, ManifestBlock, and Identifier.
These include docstrings and inline comments that were needed in order
to provide clarity of purpose and meaning throughout the code. Includes
minor bugfixes in Directory Blocks.
Moved file path expansion into base block.

This requires the addition of some block attributes which track which
block attrs are paths, and which ones must always be specified. Without
these values in hand, it is not possible to apply path expansion
correctly.
Fixed file block handling of backups.

Previously, an os.path.exists check was running at the time of action
production, rather than inside of the backup actions. This tweaks file
block action generation to always product the backup action when
triggered.
Includes some new comments.
Merge branch 'refactor/block-cleanup' into dev