handle PUT/POST/DELETE to /data/fs/[path] (Fixes #140)

Replacing the earlier PR (#152)
The function passed to `flatMap` must be pure (referentially transparent). If you call it with some value, then no effects should be executed -- rather, the effects must be encapsulated in the return value (`Process[Task, ?]`). But as it is, effects will be performed the instant that `Process` calls this function.

So this is an impure function being passed to `Process.flatMap`, and a leak of referential transparency.

The problem is easily solved, of course, just do `Process.eval(Task.delay { /* all effectful code */ } ).flatMap(Process.emitAll _)` or something of the nature.

The rule is as follows: if you create a function, whether anonymous or named, and calling that function will perform an effect, then it's impure, breaks referentially transparency, and needs to be refactored to return that effect (e.g. inside a `Task[?]` or inside a `Process[Task, ?]`. The only function which would actually execute an effect is the `run` function baked into `Process` and `Task`, and ideally those should only be called once at the application's main function (interfacing with library code such as Unfiltered sometimes requires breaking this rule).