Use the same method for registering custom vs default.

Instead of having a register default handler and a register
custom handler, just use the same function to do both but
provide a parameter to affect how overwritting of previously
existing content-types (which default handlers use to not
overwrite custom ones).
Only do the debug log if types registered.
Remove the old register_defaults function.
Add config drive support for random_seed

A new field in the metadata has emerged, one
that provides a way to seed the linux random
generator. Add support for writing the seed
and rewrite parts of the on_boot code to use
a little helper class.
Ensure data is initialized to a dict if its empty/none
Save only 512 bytes and use different file paths for debian/rhel
Raise when no seed filename provided
Review adjustments.
Add jsonschema for namespaced and verifiable module
configuration checking as well as make most of the
module logic happen in the module itself instead of
interacting with the distro object.
Ensure validate checks key existence.
Ensure udelta is valid

It appears that udelta could
have been left undefined or left
defined as a string "N/A" and then
put threw a float formatter previously.

Fix that by ensure its set to a default
and put strong checking to make sure it
is a float before using float formatting.
tools/read-dependencies, read-version: cleanups, and use sed not grep

There are just some cleanups here, and use of simply 'sed' rather than
grep and cut.  The motivation is to support running with non gnu 
'grep' that doesn't have -P.
log_time: Ensure that udelta is valid before including it as a float.

It appears that udelta could have been left undefined or left defined as a
string "N/A" and then put threw a float formatter previously.

Fix that by ensure its set to a default and put strong checking to make
sure it is a float before using float formatting.
Use the same method for registering custom or default handlers.

Instead of having a register default handler and a register custom
handler, just use the same function to do both but provide a parameter to
affect how overwritting of previously existing content-types (which
default handlers use to not overwrite custom ones).
Add test + remove jsonschema (for now)
remove cloudinit/exceptions.py
add support for reading random_seed on azure also.
populate random_seed in azure data source

Azure provides a random bit of data at '/sys/firmware/acpi/tables/OEM0'.
The walinux calls this "Entropy in ACPI table provided by Hyper-V".
Add support for reading 'random_seed' from data source.

A new field in the metadata has emerged on openstack config drive, one
that provides a way to seed the linux random generator.

This adds a 'random_seed' config module that writes and that it to
/dev/urandom.  Also added is support for reading that data on
azure via the hyper-v acpi table data.

In config drive datasource, it rewrites parts of the on_boot code to use a
little helper class.