Add get_selections() and set_selections() for dpkg.

This module will enable to freeze a package at a certain version, with the "hold" state.
Add TODO, amend later... FIXME.
Merge my dpkg-selections branch with develop.

Resolved conflicts in modules/apt.py.
Fix merge mistake.

urllib2 and json is part of standard Python.
Use yaml.safe_load()
Add another TODO
Use code-block

As per @terminalmage suggestion.
Fix mine.send

For functions that use arguments, mine.send is broken due to bugs in
salt.utils.arg_lookup() and salt.utils.format_call(). This commit
restores proper functionality.
Remove unused variables
subprocess.Popen takes a PIPE for stdin

http://docs.python.org/2/library/subprocess.html#subprocess.Popen.communicate

   Note that if you want to send data to the process’s stdin, you need to
   create the Popen object with stdin=PIPE.
Parse backing file from qemu-image info output

I'm deplying thin clones of VM's using the qcow2 disk format.  One of the lines
of the qemu-image info command reports the filename of the base disk.

   $ qemu-img info /work/aantony/kvm/ajith-sl6-2.qcow2
   image: /work/aantony/kvm/ajith-sl6-2.qcow2
   file format: qcow2
   virtual size: 20G (21474836480 bytes)
   disk size: 1.0G
   cluster_size: 65536
   backing file: ./ajith-sl6-base-image.qcow2 (actual path: /work/aantony/kvm/./ajith-sl6-base-image.qcow2)

This last line is breaking the yaml parser:

   backing file: ./ajith-sl6-base-image.qcow2 (actual path: /work/aantony/kvm/./ajith-sl6-base-image.qcow2)

   ScannerError: mapping values are not allowed here
     in "<string>", line 6, column 51:
        ... l6-base-image.qcow2 (actual path: /work/aantony/kvm/./ajith-sl6- ...

This change aims to at least parse that line.

Results look like this:

  ----------
    ----------
    ajith-sl6-2:
        ----------
        cpu:
            1
        cputime:
            6383750000000
        disks:
            ----------
            hda:
                ----------
                backing file:
                    /work/aantony/kvm/./ajith-sl6-base-image.qcow2
                cluster_size:
                    65536
                disk size:
                    1.0G
                file:
                    /work/aantony/kvm/ajith-sl6-2.qcow2
                file format:
                    qcow2
                image:
                    /work/aantony/kvm/ajith-sl6-2.qcow2
                virtual size:
                    20G (21474836480 bytes)
     <...>
Prefix for KVM/QEMU is 52:54:00
Make gen_mac() more robust.
Use the "PRIVATE" OUI by default.
Add docs to gen_mac()
Simplify code in gen_mac()
Spell out address.
Always wrap salt-call return dict

salt.cli.caller.Caller.run() was checking if the return data was a dict,
and wrapping it in an outer dict like so: {'local': ret['return']} if
the data was not a dict, to ensure that the return data is in the right
format for the different outputters.

The problem with this is that there are many execution functions that
already return a dict, such as network.interfaces, grains.items,
pillar.items, etc. These will not be wrapped. This results in a
traceback when running grains.items via salt-call, since the grains
outputter expects the return data to be a dict of dicts, with the
top-level keys being the minion id and the 2nd level being the minion's
grains dict.

This commit removes the isinstance check and simply always wraps the
return data in the 'local' dict.
Merge pull request #7023 from terminalmage/mine-fix

Fix mine.send
Merge pull request #7034 from holmboe/gen-mac

Use the "PRIVATE" OUI prefix by default