CDAP-772 Feature/cdap 772 namespace service

Namespaces APIs to manage namespaces metadata.
Question: 
Should we create and use ``Id.Namespace`` instead of using namespace name as ``Key``?

- [x] Namespace service to create, list, delete namespaces
- [x] Unit testing, standalone testing
- [x] Testing on a distributed cluster. 
Both ``put`` and ``putIfAbsent`` have the same return semantics. From https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentHashMap.html, ``putIfAbsent`` is equivalent to 
```
if (!map.containsKey(key))
       return map.put(key, value);
   else
       return map.get(key);
```
But ``putIfAbsent`` does the entire block above atomically, which is what we want, so I'll change it.