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).
':' seems to be a common reserved character on most file-systems, and ';' seems to be reserved on FAT16/32.