Second pack of unit tests added
New feature introduced - call action

 - now you can view service/application api by typing: `cocaine-tool call SERVICE`
 - fixed bug leading to infinite passive waiting if a sync result or exception is returned from first chunk when using `then` method
 - tests has been written for new features
 - no bash-completion yet

 Examples:
 >>> cocaine-tool call node
 API of service "node": [
    "start_app",
    "pause_app",
    "info"
]

>>> cocaine-tool call node info
{'uptime': 64567, 'identity': 'osx.local'}

>>> cocaine-tool call storage read "'profiles', 'EchoProfile'"
??pool-limit

>>> cocaine-tool call stor
Error in service "stor" - the specified service is not available
Fixed: cocaine.tools.parseCrashlogs couldn't handle app names with ":" in it
Merge pull request #6 from ijon/master

Fixed crashlog handling for apps which names have ":" in them
Test have been written to check correct parsing crashlogs for apps with colon symbol
A lot of work to make available asynchronous initialization of services,
pipes, etc.

Now asio.ev.Loop have instance method, which returns global ioloop, and
add_timeout, add_handler - which are the same as in tornado.ioloop.IOLoop's methods.

Example of asynchronous pipe connection:

from cocaine.asio.pipe import Pipe
from cocaine.asio.ev import Loop

io = Loop.instance()

def callback(result):
    try:
        print result.get()
    except Exception as err:
        print err
    else:
        print "OK"

p = Pipe(("127.0.0.1", 10053))
p.async_connect(callback, 1)
io.run_for_time(1)

Example of asynchronous locator resolving:

from cocaine.asio.ev import Loop
from cocaine.asio.locator import Locator

io = Loop.instance()

def callback(res):
    try:
        print res.get()
    except Exception as err:
        print err

l = Locator()

l.async_resolve("node2", "localhost", 10053, callback, 1)
l.async_resolve("node", "localhost", 10053, callback, 1)

io.run_for_time(1)
Add asynchronous reconnect for services.

Example:
from cocaine.asio.ev import Loop
from cocaine.services import Service

s = Service("node")
def callback(res):
    try:
        print res.get()
    except Exception as err:
        print err

io = Loop.instance()

for i in xrange(0, 20):
    s.async_reconnect(callback, 10)

io.run_for_time(1)
Version bump