Separated the Locator Service from the Locator itself.

This makes the codebase a bit more clean, as well as allows clients to
resolve Locator Service like a normal service.
Locator cleanup.
Proper endpoint creation code style.
Fix selecting of a service from a routing group.

Locator must not inspect groups for which sum of weights equals zero (not "doesn't equal"), because such groups don't have an active services.
Merge pull request #63 from andrusha97/routing-groups-fix

Fixed selecting of a service from a routing group.
Merge branch 'master' of github.com:cocaine/cocaine-core
Do not add Locator to the Router.

According to @andrusha97 comment for commit
f4655b4e9fe3af8b72c58e30624b2d9ee16cd35b, Location Service shouldn't be
added to the Router.
Fix selecting of a service from a routing group.

Locator must not inspect groups for which sum of weights equals zero (not "doesn't equal"), because such groups don't have an active services.
Renamed Dispatch Tree to Dispatch Graph, because it's not a tree.
Fixed building on GCC 4.4.
Code style fixes.
Function parameter naming fixes.
Avoid unnecessary object instantiation.
Service management is now a part of Context.

Locator was refactored so that the local service management part was cut
out and moved to the Context, because the Locator is a service itself,
so it should only be responsible for service-related duties, i.e.
serving client requests.
Fixed building on GCC 4.4.
Moved out Context Reports to a separate file.
Forgot to actually commit the change, meh.
Detect remote node presence using heartbeats.

Instead of relying on multicast announces, actively request heartbeats
from the remote nodes to see if they're still alive. This will allow to
discover new nodes by means other than multicasting.
Fixed building on GCC 4.4.
Make it actually work.