Read encoded with base64 user data

This allows users of CloudSigma's VM to encode their user data with base64.
In order to do that thet have to add the ``cloudinit-user-data`` field to
the ``base64_fields``. The latter is a comma-separated field with
all the meta fields whit base64 encoded values.
initial commit for status
merge from trunk
possibly functional start testing
fixes from testing, force symlink
add doc/status.txt
fix end/start in doc
minor cleanups
fix write_json call
be atomic when writing status files
cc_seed_random: fix bug and support pollinate command

there was a bug that prevented seeding of /dev/urandom from metadata provided
by the datasource unless the user provided random_seed config.
This should, instead, be the default behavior.
allow random command's output to go through

by default we call 'pollinate -q' which is nice and quiet.
if the user wants to be noisy, let them.
seed_random: support a 'command' to seed /dev/random

This extends 'random_seed' top level entry to include a 'command'
entry, that has the opportunity to then seed the random number generator.

Example config:
 #cloud-config
 random_seed:
   command: ['dd', 'if=/dev/zero', 'of=/dev/random', 'bs=1M', 'count=10']
version space (v1:) result_path json also
write status to /run/cloud-init/ for external consumption

This populates and maintains status.json and result.json with
json formated data about cloud-init's errors and datasource.

It is intended to be consumed by other programs that want to
wait until cloud-init is done, or know its success.
CloudSigma: support user-data being base64 encoded

This adds the ability to read a 'base64_fields' entry in the metadata,
and if cloud-init-userdata is listed in that, then content will be
base64 decoded first.
merge from trunk
seed_random: do not capture command output, provide env RANDOM_SEED_FILE

call the command without capturing output, and provide RANDOM_SEED_FILE
to the environment that it is run in.
final_message: allow replacement of capital name keys.

documentation of final_message in 
  doc/examples/cloud-config-final-message.txt
showed '$UPTIME' and '$TIMESTAMP' would be available, but
only the lower case versions of these strings were available.

This change just makes all lower case and upper case keys
available here to avoid breaking anyone who used the
functional-but-not-correctly-documented lower case names.
Windows Azure defines the ephemeral0 mount as being a per-boot instead of
per instance. Under a variety of circumstances, the ephemeral device may
be presented as a default device. This patch detects when that situation
happens and triggers CC modules disk-setup and mounts to run again.

Details of changes for cloudinit/sources/DataSourceAzure.py:
- auto-detect the location of ephemeral0
- check each boot if ephemeral0 is new
- done via NTFS w/ label of "Temporary Storage" w/ no files on it
- if device is mounted, datasource will unmount it
- if is new, change mounts and disk-setup to always for that boot only