datasource: Move datasources into their own packages.
timeouts: Use After() instead of Tick()
metadata: Split the metadata monolith into ec2 and openstack

Added more testing.