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).
Ahh yeah, I was thinking it worked just fine on linux. I guess K2 will be used on non linux machines