(PUP-1976) Use metadata.json as canonical metadata source.

Prior to this commit, the Modulefile was used as the primary source of user-facing metadata for modules.  This file was executable Ruby, which was intended to describe a simple data structure.  This causes a few problems for us in the long-term, including making automated module builds a significantly more difficult proposition, and making changes to acceptable metadata a slow process (requiring new releases of Puppet).  In addition, the only piece of Puppet code that interacted directly with the Module file was the `module build` action – anywhere we actually need to know something about the module, we look it up from the metadata.json file.

This commit removes this level of indirection between user input and module data, making the metadata.json file a first-class citizen in Puppet modules.  It similarly deprecates the Modulefile as a supported source of module data.  Checksums have also been moved into their own file (per PE-3124), and `puppet module changes` has been updated to leverage the new file when available (per PE-3120).

For users building a module containing only a Modulefile, this will issue a warning that the Modulefile is deprecated, and output the corresponding metadata.json file.

For users building a module containing both a Modulefile and a metadata.json file, this will issue a warning that the Modulefile is deprecated and is being ignored.
(maint) Refactoring module name validation to be less obtuse.

Previously the code that validated module names took a pessimistic
approach, validating conformance only to assert unrelated non-conformance.
As it turns out, this is messy to read and understand, so this change
rewrites the logic in a more straightforward manner.
(maint) Use PuppetSpec::Files for tmpdir creation in tests.

Before this change, the PMT Checksummer spec was using the in-built
'tmpfile' library directly.  For conformance with the rest of the test
suite, it's been recommended that we should use PuppetSpec::Files for
that functionality (which this change implements).
(maint) Fix metadata validation for missing namespaces and module names.

Prior to this commit, validation would raise non-sensical validation
errors if you attempted to validate a module name that contained a
separator (either '-' or '/'), but less than one character on either
side.  This change adds validation for those cases.
(maint) Update PMT acceptance tests to match new verbiage

Prior to this commit, the acceptance tests would fail due to changes
made to the error output from the changes command.  This change brings
those tests in line with the expected behavior.
Merge remote-tracking branch 'upstream/master' into PE-3117

Conflicts:
	acceptance/tests/modules/changes/missing_metadata_json.rb
	lib/puppet/module_tool/applications/application.rb
	lib/puppet/module_tool/applications/builder.rb
	lib/puppet/module_tool/applications/checksummer.rb
	spec/unit/module_tool/applications/builder_spec.rb
Merge pull request #2436 from pvande/feature/master/pe3117_pmt_should_prefer_metadata.json

(PE-3117) Use metadata.json as canonical metadata source.