Merge pull request #30 from noxiouz/master

Toolset for 0.10.2.
Release 10.2.

Mostly bugfixes and minor improvements. Consult debian/changelog for
release details.
Merge pull request #31 from noxiouz/master

Fix mistake with write()
Merge branch 'master' of github.com:cocaine/cocaine-core
Always use _Exit() in the process isolate.

All failure branches in the child post-fork path of the process isolate
should terminate with _Exit() to avoid broken ZeroMQ sockets, see commit
304a3e1d18c92c03ee17201cbdf1e56aea93be81.
Specify enum underlying types only when needed.

Underlying type specification only makes sense when enums are going
to be transferred over the wire, for additional verbosity. In other
cases the default type is fine.
Consolidate INCLUDE_DIRECTORIES CMake commands.

Nothing functional, pure beauty. Actually, our build system is fucked up
beyond any recognition and should be rewritten from scratch. One hundred
bucks to anyone who has the will and ability to acomplish this task.
Added basic UDP socket support.

Some primitive UDP socket support which is needed for the multicast
sockets used in IPVS gateway service. Also made some cosmetic changes in
protocol descriptions.
Deferred void functions.

Added an ability to make asynchronous service functions which return
nothing, but in the future. Similiar to std::future<void>.
Merge branch 'master' of github.com:cocaine/cocaine-core
Optional method parameters for services.

It is possible now to wrap method parameter tuple elements in
optional<T> or optional_with_default<T, T t> modifiers. In this case,
the length check on the received argument tuple will be relaxed and all
the missing arguments will be either default constructed or copied from
the default value.
Minor cleanup and macro pseudo-namespacing.

Some logical include reordering. Also, wrap COCAINE_DECLARE_NONCOPYABLE
macro parameter in underscores to avoid conflicts.
Disable tautological compare warnings on GCC too.

Comparing unsigned values to be less than zero is tautological and emits
a warning, but it happens during argument tuple length check, when a
function is nullary or has all its parameters marked as optional. We
disable this warning on Clang and now on GCC, too.
Make the optional mechanics work.

I can't handle pointer arithmetic, obviously. So just copy some tiny
objects around.
Move some of the slot code out from the header.

Well, the more code is compiled once the better. Invocation mechanics
will be moved out too, as well as type modifiders (optional, etc).
Prefer standard logical types to MPL.

Use standard true/false types instead of MPL's bool integral constant
types (mpl::bool<Value>). Not really necessary, but less dependencies is
always a good thing.
Drop all using declarations from the headers.

Using declarations in the headers are a really good way to shoot
yourself in the foot. Especially, when they're used just for looks.
Qualify the use of reactor in the node service.

After the previous commit, the node service got broken on GCC 4.4 due to
namespacing rules.
A bit nicer way to use metafunctions.

Use MPL's metafunction applicator instead of a mess of template
keywords. The only reason is that this thing is documented, so there
will be less questions about the magic.
Lock the encoder early during write.

Previously, only the flush operation was interlocked, which lead to
buffer corruption due to the fact that the buffer itself wasn't guarded,
meaning multiple threads could've been able to write there
simultaneously.