Add native file-system key storage driver (and other minor changes)

### Native File-System Storage Driver
* Everything except key wrapping implemented.
* Save/load are fault tolerant.
* Unit tests included.

### Other Changes
* Expanded storage exception hierarchy.
* K2Storage.open(String) automatically percent-encodes common characters.
* Organized all address processing utilities into one class (and unit tested it).
* Simplified existing unit tests by throwing unexpected exceptions rather than catching.
* Made 'core' and 'type' fields required when deserializing Keys and KeyVersions (otherwise a zero-byte proto is acceptable).
That would work only if the file already exists. High-level idea here is to allow only safe/portable key files to be created.