Skip retry and continued fetch of userdata when NOT_FOUND

When a 404 http code comes back from the fetching of ec2
data, instead of retrying immediatly stop the fetching process
and in the userdata fetching function handle this case as a
special case of no userdata being fetched (an empty string
in this case).
Remove pylint warning about unused request_args
Skip retry and continued fetch of userdata when NOT_FOUND

When a 404 http code comes back from the fetching of ec2
data, instead of retrying immediately stop the fetching process
and in the userdata fetching function handle this case as a
special case of no userdata being fetched (an empty string
in this case).
Use the right exception
url_helper: call exception_cb with the UrlError exception

previously, we were calling with the exception that was caught rather
than the UrlException, which meant the exception callback couldn't
be assured there would be a status_code.
Fixes for SmartOS datasource (LP: #1272115):
1. fixed conflation of user-data and cloud-init user-data. Cloud-init
   user-data is now namespaced as 'cloud-init:user-data'.
2. user-scripts are now fetched from the meta-data service each boot and
   executed as in the scripts directory
3. datacenter name is now namespaced as sdc:datacenter
4. user-scripts should be shebanged if there is no file magic
pep8/pylint fixes

tools/run-pep8 wasn't checking all python files.
tools/run-pylint wasnt checking bin/cloud-init

fixed resultant pep8 issues after finding them.
Fixed flip-flopped comment
add --dummy-variables-rgx= param when calling pylint

new pylint in trusty complains about '_' variables if we don't do this.
This seems to be ok in older versions of pylint also.
pylint and long line fixes.

This fixes up many long lines to be < 80 chars and some other
pylint issues.  pylint 1.1 (in trusty) is now complaining about
the lazy logging, so I'll clean that up when I touch things.
Rebasing on trunk
Make SmartOS script handling self-contained in datasource.
Freebsd cleanups

- Remove direct usage of open() and use the
  corresponding helpers instead.
- Fix the non-existence of the copyfile routine
  and just use the ones that do exist in the
  utils module to do the file backup.
- Use class level constants for the various file
  names read, this matches the same usage in the
  other distro types.
Log failure to restore backup locale file
minor changes for pylint, write_boot_content improvement.

if write_boot_content is given somethign that starts with #!,
then there isn't a reason to invoke 'file' to tell us that it
starts with shebang.

This way, we only run file in 2 cases:
 a.) binary content (don't really know if that is supported or not)
 b.) magic "user meant to run this with /bin/bash but couldn't be bothered to
     type that"
Fixes for SmartOS datasource

1. fixed conflation of user-data and cloud-init user-data. Cloud-init
   user-data is now namespaced as 'cloud-init:user-data'.
2. user-scripts (not user-data) are now fetched from the meta-data service
   each boot and executed as in the scripts directory
3. datacenter name is now namespaced as sdc:datacenter
4. user-scripts will now have '#!/bin/bash' magically prepended
   if the 'file' thinks its plain text and it does not start with '#!'
Fix logexc usage in freebsd distro

- There appeared to be a few logexc calls
  that did not pass the logger in, fix those
  locations where this occured.
- When a group member adding fails, log the
  error and try the next member instead of
  failing adding any more members
Don't try to create members if group creation fails
read_file_or_url: raise UrlError with 404 on ENOENT

This makes it easier to call read_file_or_url and handle file or url
errors.  Now read_file_or_url will raise a UrlError in either case
on errors.
populate_dir: only makedir if it doesn't exist