Merge pull request #9652 from mbirtwell/tweak_rpm_build

Tweak rpm build
utils.network._interfaces_ipconfig(): fix botched singleton tuples

Python 2.7.6 (default, Nov 11 2013, 11:11:46)
>>> # Parentheses don't make tuples. Commas do that.
>>> ('Subnet Mask') == 'Subnet Mask' != ('Subnet Mask',)
True
>>> x = ('Subnet Mask')
>>> type(x)
<type 'str'>
>>> y = ('Subnet Mask',)
>>> type(y)
<type 'tuple'>
>>> # Why this went unnoticed:
>>> key = 'Subnet Mask'
>>> key in ('Subnet Mask')
True
>>> # Why this is problematic:
>>> key = 'Mask'
>>> key in ('Subnet Mask')
True
modules.mount.active(): fix FreeBSD check
Client testing

 * Minor spelling and doc fixes to client module
 * Unit testing client module.
Pylint fixes.
utils.network.remotes_on_local_tcp_port: trivial simplification of condition
digital_ocean.script(): rename local var to avoid shadowing

************* Module salt.cloud.clouds.digital_ocean
salt/cloud/clouds/digital_ocean.py:520: [W0621(redefined-outer-name), script] Redefining name 'script' from outer scope (line 516)
modules.yumpkg5._parse_pkginfo(): avoid shadowing

************* Module salt.modules.yumpkg5
salt/modules/yumpkg5.py:74: [W0621(redefined-outer-name), _parse_pkginfo] Redefining name 'version' from outer scope (line 227)
modules.zcbuildout.run_buildout: fix docstring typo
copyedit zcbuildout module
Don't expect salt to be installed to run the tests.

Use the testing configuration files.
Correct phrase. Thanks @SEJeff.

Double to single quotes.
memcached.replace(): avoid shadowing status() func

************* Module salt.modules.memcached
salt/modules/memcached.py:198: [W0621(redefined-outer-name), replace] Redefining name 'status' from outer scope (line 68)
fix numerous pylint C0325 (superfluous-parens) warnings

"Unnecessary parens after 'XXX' keyword"
digital_ocean._get_node: rm unused 'location' arg

salt/cloud/clouds/digital_ocean.py:543: [W0613(unused-argument), _get_node] Unused argument 'location'
Only update the bootstrap script on request. Fixes #9535.
Fixing two tiny bugs in keystone module. The hasattr() was used with a dict instead of an object. New change uses the getattr() call which is IMHO safer
Fix support for additional modules when these are single file modules

For example, to generate a thin.tgz tarball that is able to use dockerio salt
state, you would do:
```
>>> salt.utils.thin.gen_thin('/tmp', 'msgpack,docker,websocket,six,requests', True)
```
But it would add a wrong path to the six.py module in the thin.tgz tarball
because six.py is a single file python module.
This pull request fixes this.

(refs #9337)
Updated the digital ocean doc to fix some formatting issues regarding line length and indenting.
Better trace for nested jinja errors