Using a constrained Name for namespaces names

This is in preparation of the `DirPath/FilePath` update.
@raronson we still need to create `Name` values from validated string. This is why I proposed `reviewed`. I can go back to `unsafe` everywhere but there are places where the string is guaranteed to be correct, after parsing for example. The other alternative I see is to go
```scala
// validate Name
def fromString(s: String): Option[Name] = ...

def unsafe(s: String) = 
  fromString(s).getOrElse(sys.error("this shouldn't happen but this happened anyway with "+s))