Add new proof of access put logic

Add new APIs to ManagedStorage which allow a caller to "upload" a file by proving they have access to it, without needed to upload the whole file. They ask to put a file (supplying the checksums for the entire file) and are prompted to respond with checksums from a random byte range in the file. If the checksums match, then the put succeed as if the whole file were uploaded.
The default rand source is not seeded by juju, so this will be deterministic. The caller could potentially brute force its way into getting a challenge with a known range.