add config for caching metadata in memory

* add config metadata_memory_cache_ttl to enable caching metadata
in memory
* set default to 5 as project neutron/master

Conflicts:
	manifests/agents/metadata.pp

Change-Id: Ib6a05ae5033c53c4196f736373752370012d82a6
(cherry picked from commit 7babb4f4177908c5d5d122ff8bcd5a28ad5b38c7)
customize caching implementation for neutron_network

Because of issue:

  https://tickets.puppetlabs.com/browse/PUP-3656

in Puppet, exceptions from prefetch do not prevent resources
from being initialized. In the case of neutron, this
can lead to duplicate resource definitions b/c neutron
does not prevent users from creating duplicate objects.

In our test lab, the following is happening:

1. prefetch fails:

Could not prefetch neutron_network provider 'neutron': Execution of '/usr/bin/neutron net-show --format=shell 4d46e084-5d34-471c-ad11-2f9a7aacdee7' returned 1: Unable to establish connection to http://lb.keystone.service.consul:35357/v2.0/tokens

2. resources run anyways

3. since they cannot see the existing resources in the @property_hash
they keep on creating duplicate network entries.
Merge pull request #2 from bodepd/custom_caching

Custom caching