Added basic way to skip file actions based on permissions.

At Action execution time, checks to see if the nearest ancestor
of a target file is writable & c. If the condition is unment, then
the action is a no-op. This is not uniform with the current strategy
for checking chowns, so that should change.
Changed chwons to use new permission checking.

File and Dir chowns are now always generated when sufficiently
specified. They don't always do anything -- instead, isroot checks
and existence checks take place during execution and may cancel or
modify the running action.
Fixed tests using new permissions checks.

Tests were failing because they did not mock stat, or because
they were expecting chown actions to be omitted when is_root is False.
Repairs tests and does some mocking with statement compactification.
Removed stale file block tests, and added modify action tests for
permissions checks.
Merge branch 'feature/skip-bad-permissions' into dev