Fix off by one index error in tests.
Eagerly create file names to avoid allocations.

Cherry picked from https://github.com/square/okhttp/commit/f835806590c92b4c1ea7715da09de5f427df96b9
Add gradle build file.
Refactor Snapshot to be non fixed Value instead

Trade off knowing that a Snapshot is a fixed 
version of the data for being able to access
the underlying Files directly.
Expose file directly in editor.

Same tradeoff as for InputStreams in get(), we 
get access to the file, but we have no guarantees
about the consistency of the data in that file in
between reads/writes.
Remove implicit StringBuilders.
Remove key validation.