Preferences: Add "foreign" compile-time preferences to hash
Preferences allows you to access preferences keyed by foreign modules,
but when collecting / tracking our dependencies these were being
filtered out (see JuliaPackaging/Preferences.jl#86). This change embeds
in the cache header all preferences accessed at compile-time, including
those in foreign packages, which should be more representative of your
actual dependencies.
One major caveat is that an `__init__` function in a foreign package
accessing (its own) preference will be recorded as a compile-time
dependency, which can lead to spurious re-compilation to the extent that
the preference may not change how the package actually behaves at
precompile-time (or even if it does, it may be unused)