translate Paths to valid dot-separated MongoDB collection names (Fixes #139)

This works, but isn't obviously an improvement, to my eye:
```
  def asPath: Path = {
    def unparse(cs: List[Char]): List[Char] = cs match {
      case '\\' :: '.'  :: tail => '.'  :: unparse(tail)
      case '\\' :: 'd'  :: tail => '$'  :: unparse(tail)
      case '\\' :: '\\' :: tail => '\\' :: unparse(tail)
      case '.'  :: tail         => '/'  :: unparse(tail)
      case c    :: tail         => c    :: unparse(tail)
      case Nil                  => Nil
    }
    
    Path(unparse(name.toList).mkString)
  }
```

That just makes me want to write a simpler parser combinators library, and avoid building the input and output lists, and make it tail-recursive. All of which is do-able, but the standard parser combinators already solve most of these problems and are more familiar, so why bother?

On the other hand, if we eventually need to do similar escaping for each backend, we could replace this with a generic *escape* method, but that seems unnecessary at this moment.