Refactor how files are watched

LoadedFile is now WatchedFile (since it has nothing to do with loading
files, only with telling when they change), and some of its internal
variables have been renamed for clarity. Also added a FileWatcher class
whose entire purpose is to track a set of LoadedFiles in aggregate. This
is now used by TypeCollection in place of its own hash.

Puppet::FileServing::Configuration::Parser and
Puppet::Util::NetworkDevice::Config were inheriting LoadedFile, simply
for its changed? method, even though neither of them really has file
properties. Now they wrap a WatchedFile instance instead.
Merge branch 'nicklewis-refactor-loaded-file'

* nicklewis-refactor-loaded-file:
  Refactor how files are watched

closes #1355
(maint) Make sqlite3 use an in-memory DB for specs

Without this patch the spec tests are configuring sqlite in a manner
that writes the database to a file named ':memory'.  This is a problem
because filesystem databases are slower than in-memory databases and the
tests are not cleaning up this file after completing.

The change in 60e78b2d36f23877dc7b50e72578ad123d62c1f0 caused this
change in behavior, likely by accident, because the database connection
string was ':memory:' and the patch changed the string to ':memory'
likely because this looks like a Ruby symbol.

This patch addresses the problem by restoring the original connection
string of ':memory:'
Merge branch 'stable'

* stable:
  (maint) Make sqlite3 use an in-memory DB for specs
Merge branch 'master' of https://github.com/puppetlabs/puppet