Store "extracted" state in config- and changed-managed-files scope

Until now we had to check for the presence of the according directory in
the system description in order to tell if a scope was extracted or not.
This is now simplified and made more explicit by storing the "extracted"
state directly in the json.
Also add extracted flag to unmanaged-files scope
Bump format version

The new version 2 adds "extracted" flags to the config_files,
changed_managed_files and unmanaged_files scopes.
Write format migration from version 1 to version 2
Generate pretty JSON when upgrading system descriptions
Add integration test for "machinery upgrade-format"
Fix *-files inspectors to adhere to format version v2

The inspectors generated normal Arrays as the file lists instead of
using the according model classes. That caused problems when serializing
the descriptions to JSON.
Merge pull request #229 from SUSE/review_140917_fix_inspectors_for_schema_v2

Fix *-files inspectors to adhere to format version v2
Transform include_scope matcher into include_file_scop matcher

The include_scope matcher seemed to be applicable to both
Machinery::Arrays and Machinery::Objects, but it actually only worked
for Machinery::Arrays. It was also only used to match file scopes which
were changed to Machinery::Objects recently so it broke there as well.

This commit fixes the matcher for the file scopes and makes it clear
that it only works for file scopes from the name.
Merge pull request #236 from SUSE/review_140917_fix_integration_tests

Transform include_scope matcher into include_file_scop matcher
Adapt the data model documentation to the new migration policy
Adapt Migration class documentation

It was based on a previous iteration of the class and thus did not
describe reality.
Merge pull request #238 from SUSE/review_140918_finish_migration_implementation

[Review] Request from 'aduffeck' @ 'SUSE/machinery/review_140918_finish_migration_implementation'
Encapsulate all machinery output into Machinery::Ui methods

Before, some output was done using the Machinery::Ui class (
paged output, some warnings) and other output was done using the
STDOUT.puts and STDERR.puts methods.

This commit now streamlines all machinery output so that everything is
routed through Machinery::UI. That makes everything clearer and has the
additional benefit that the machinery output can be easily stubbed in
the tests without affecting non-machinery output.

Fixes #165
Only stub machinery output where necessary

Fixes #165
Remove superfluous stubs

The stubs wer necessary because Machinery::Ui.warn was stubbed globally
but we had to call the original method in these tests. The global stub
was removed in commit 9446860, though, so it is no longer needed.
Add README for developer documentation
Add architecture document
Merge branch 'developer_docs'

Pull request #239
Fix missing line break between missing and additional file errors