General Apt-Sources fixes

These are some sanitization fixes to help make apt-sources
management better.  The basic principal is to not "configure" the
source if the source already exists.

Some format validation for PPA expansion added.
Fixes for empty sources list and strip on "line"

For matching purposes (repo configured) the "line" property needs
an explicit strip() called as it can end up with a \n in the line
itself.

Empty sources error was due to an erroneous check to see if we had
any repos (assumption was made we had some).  Since this not always
true, the superflous check has been eliminated.
adding primitiv git module functions for handling remotes

functions added:
  * git.remotes
  * git.remote_get
  * git.remote_set
extend git.latest state with remote handling - don't trust origin

because the name of git.latest is the repository where the target shut be based on.
I think it is importent that this state does handle remotes correctly and forces them.
Merge remote-tracking branch 'upstream/develop' into develop
fix spell and description of git.latest remote_name
Merge remote-tracking branch 'upstream/develop' into develop
fix string format on git module&state for python2.6
Import sed_contains from file.py in win_file.py

Also fix small inconsistency in the sed escape function
Return True even if no changes in `file.sed` (fixes #4481)

Issue #4481 gives a completely valid use case for sed which results in
the `begin` pattern always being present.  `sed` should not return False
in this case.
Make module function `file.sed` return the `cmd.run_all` dict
Use the options var we defined earlier, fix win_file.contains
Check file.sed return code, only return False if it errored
allow dnsutil to query some record types via dig
would choke on non-existant SPF records before.
Extend log message in master.py for peer error
Major overhaul of the minion publish system on the master

This adds a number of things, first the peer system will no longer
use the old static returns interface, nor will it impliment client
components, instead everything will be executed via the localclient
directly.
The full_data return also adds much more data to the return including
the new retcode additions
Merge pull request #4498 from basepi/sed4481

Don't return False on `file.sed` if no changes, check retcode instead
Merge pull request #4499 from hank-at-code42/dnsutil

allow dnsutil to query some record types via dig
allows for npm install to be run on a directory

node.js application configuration is specified in a package.json file,  

to configure a node.js application you must run npm install inside the directory of your application, if this was required to be enforced as a salt state , it is now possible.