Feature/cdap 778 namespaced services

Changes:
1. Services exist within namespaces
2. Service discovery is also namespaced

Things to watch out for:
* The ``ServiceHttpHandler.getRunnableCount()`` is now merged with ``ProgramLifecycleHttpHandler.getRunnableCount()``. The only extra logic in the former one was to go to the store if the program is not found running in YARN and get its instance count. However, this method is being used to update provisioned/running instances. Hence, I think the method in ``ProgramLifecycleHttpHandler`` should be preferred. To get requested count, the ``ServiceHttpHandler`` already goes to the store, so its unnecessary to do that again for getting ``provisioned`` instances.
* ``ServiceHttpHandler.getServiceSpecification()`` is now merged with ``ProgramLifecycleHttpHandler.getProgramSpecification()``, which was refactored.
I guess we can't consolidate this with the other `rewriteRequest` method? Unfortunate. 

Minor suggested refactor:
```java
private HttpRequest rewriteRequest(HttpRequest request) {
    String originalUri = request.getUri();
    String namespaceSubstitution = String.format("%s/namespaces/%s", Constants.Gateway.API_VERSION_3, Constants.DEFAULT_NAMESPACE);
    request.setUri(originalUri.replaceFirst(Constants.Gateway.API_VERSION_2, namespaceSubstitution);
    return request;
}
```