Merge pull request #76 from pkit/tests_fixes

refactor zerocloud test framework
Merge pull request #78 from pkit/tests_fixes

fix tox env incompatibilty
added another channel `/dev/script`

some Python users were unhappy with no dedicated channel for scripts
added `/dev/script` as a dedicated script channel
the default co-location logic was adjusted to not use `script` channel as a co-located object
if you still want it to be co-located for some strange reason you can use `"attach": "script"`

P.S. I'm considering to use `"attach": "none"` as a default behavior for nodes with just a `script` channel
but let's wait and see
Merge pull request #80 from pkit/script

added another channel `/dev/script`
produce better error codes

if one of the queries in clustered environment failed, the final response was still "200 OK"
now the server will choose `max(all_error_codes)` as a final error code and return it to user instead of "200 OK"
correct error messages for each particular task (if any) can still be parsed from `X-Nexe-Error` response header
Merge pull request #81 from pkit/error_codes

produce better error codes
refactor channel mangling in config parser

the function `_add_new_channel` was too opaque and created things under the hood
the function `_get_new_node` was mutable
now it should be clear what's going on just from looking into the `parse()` flow
fix nodes with only networked channels

the nodes that had only network channels attached would not show in final config
it lead to various strange errors, like `zvm://` urls not being resolvable
Merge pull request #79 from pkit/bug_fix

fix nodes with only networked channels
doc/requests: mention that job description is cached
doc/requests: combine two repetitive paragraphs
doc/requests: use precise format for variables

The double quotes are not actually part of the variable syntax.
doc/requests: add details about variable interpolation
Merge pull request #85 from mgeisler/doc-requests

Add more detail to requests doc about variable interpolation
test: use `send`, not `sendto` on connected socket

According to the Python docs
(https://docs.python.org/2/library/socket.html#socket.socket.sendto),
you should not use `socket.sendto` if a socket is already connected.

Linux (Ubuntu 12.04) seems to be forgiving of this behavior, but when I
run tests on OSX, I get several `socket.error: [Errno 56] Socket is
already connected` errors in the test suite.

This behavior can be demonstrated with the following Python script:

---
import socket

receiver = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sender = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

addr = ('127.0.0.1', 27000)
receiver.bind(addr)
sender.connect(addr)

num_bytes = sender.send(b'foo')
print('Received: %s' % receiver.recv(num_bytes))

num_bytes = sender.sendto(b'bar', addr)
print('Received: %s' % receiver.recv(num_bytes))
---

On Linux, this works and the received messages are printed.
On OSX, the `sendto` calls raises a `Socket is already connected` error.
Merge pull request #87 from larsbutler/fix-test-suite-socket-send

test: use `send`, not `sendto` on connected socket
added optional `name` argument to `exe` property

The new job description property `exe.name` is introduced by the patch
It allows user to explicitly set a name for executable (the value of `ARGV[0]`)
The property is optional, if not supplied, the default method for setting `ARGV[0]` will be used
Currently the default is to set it to "node name"
Docs updated.
Merge pull request #89 from pkit/exe_name

added optional `name` argument to `exe` property
test/unit: fix all pep8 errors
test/unit: fix all pyflakes errors