(PUP-1144) Fix up failing tests (pending new/better validation)

Two tests that expected validation to fail did not get triggered
because the too strict validation was removed. It needs to be replaced
with a different better validation. Such validation should be added
in 3.5 (too much work for 3.4) - instead, just accepting potentially
faulty names (they still have to lex correctly).
(PUP-1144) Make variable name checking stricter

The fix for PUP-1144 relaxed the rules for variable checking.
This reintroduces checking but done right. It is now possible to
start the *first* name segment with an underscore. Subsequent
segments must start with a lower case letter.

Legal:

* $_a
* $::_a
* $aA
* $aA::aA

Illegal:

* $a::_a
* $A
* $a::A
(PUP-800) Add offset and length to Locatable base class in model

This adds offset and locatable as attributes in the pops model
and makes all objects in a Program model have this trait (except
the top level Program which is always from 0 to the entire length of
the source).

Further, the Program may now contain the line index, and may
contain the source text.
(maint) Remove stale commented code
(maint) Fix up type parser's handling of String

String parameterization not fully supported (in string form),
and previously non parameterized types were listed twice.
(PUP-672) TrustedInformation handles a nil certificate.

Acceptance caught an issue with an external ca not passing the
certificate info in the request (the
acceptance/tests/external_ca_support/apache_external_root_ca.rb does
this because its SSLOptions does not have +ExportCertData in
acceptance/tests/external_ca_support/fixtures/httpd.conf).

So we are modifying the TrustedInformation class to handle a nil
certificate without failure, but issue an info level warning in the
logs.

This also modifies the acceptance test to ensure a teardown, as failure
to reach the clean up code is breaking following tests when the httpd
server gets left up as master.
(PUP-716) Change Puppet::FileSystem::File to module methods

This changes the API in a new implementation in a file called file_.rb
The intent is that it should replace the implemntation in File,
or perhaps directly in a Puppet::FileSystem class.
(PUP-716) Change more tests after refactoring

This also fixes the spec_helper which had a reference to
FileSystem::File
(PUP-716) Make more tests in fileset_spec pass
(PUP-716) Fix up YAML specs
(PUP-716) Fix up fileset_spec (1 failing test remains)

One test is still failing.
(PUP-716) Fix up content_spec.rb
(PUP-716) Fix up watcher spec
(PUP-716) Fix up all of util
(PUP-716) Fix up the type tests
(PUP-716) Fix up metadata_spec after refactored FileSystem changes
(PUP-716) Fix up transaction tests
(PUP-716) Fix up tests in ssl dir

This also migrates the overlay support from the previous form of the
file system abstraction to this form.
(PUP-716) Refactor and mae file_system/file_spec green

This refactors the file_system/file_spec to comply with the new API.
Several problems found with the implementation.

* Bad include of memory_impl
* facade methods did not relay to _impl
* assert_path did not consider objects coercable to string
  (e.g.watched file)
(PUP-716) Refactor tempfile_spec after FileSystem API change